com.sun.mail.handlers.text_plain不能转换为javax.activation.DataContentHandler [英] com.sun.mail.handlers.text_plain cannot be cast to javax.activation.DataContentHandler

查看:1502
本文介绍了com.sun.mail.handlers.text_plain不能转换为javax.activation.DataContentHandler的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从ColdFusion 8升级到ColdFusion 9.我有一个Java类,我从CF调用它读取和解析mbox邮箱文件的内容。该类与CF 8工作正常,但它在CF 9中抛出一个错误。错误是:

I'm upgrading from ColdFusion 8 to ColdFusion 9. I have a Java class that I call from CF which reads and parses the contents of an mbox mailbox file. The class works fine with CF 8, but it's throwing an error in CF 9. The error is:

com.sun.mail.handlers.text_plain不能转换为javax .activation.DataContentHandler

com.sun.mail.handlers.text_plain cannot be cast to javax.activation.DataContentHandler

错误发生在Java代码从javax.mail.internet.MimeMessage调用getContent()函数的时候。基于消息的MIME类型,我将getContent()的返回值转换为String,MimeBodyPart或Part。

The error is happening at the point where the Java code is calling the getContent() function from javax.mail.internet.MimeMessage. Based on the MIME type of the message, I'm casting the return value of getContent() to one of String, MimeBodyPart, or Part.

有人有任何想法如何解决这个问题?

Does anyone have any ideas how to fix this?

这是我的Java函数:

Here's my Java function:

public String getHtmlContent(Part p) throws IOException, MessagingException {
    StringBuffer szContent = new StringBuffer();
    if ( p.isMimeType("text/plain") ) 
    {
        szContent.append( contentToHtml( (String) p.getContent() ) );           
    }
    else if ( p.isMimeType("multipart/*") ) 
    {
        Multipart multipart = (Multipart) p.getContent();
        for ( int i = 0, n = multipart.getCount(); i < n; i++ ) {
            szContent.append( getHtmlContent((MimeBodyPart) multipart.getBodyPart( i )));               
        }
    }
    else if ( p.isMimeType("message/rfc822") ) 
    {
        szContent.append( getHtmlContent( (Part) p.getContent() ));             
    }
    else 
    {
        throw new RuntimeException( "Cannot determine message content." );
    }
    return szContent.toString();
}

这里是Java堆栈跟踪:

And here's the Java stack trace:

javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:581)
在javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:535)
在javax.activation.CommandMap。 createDataContentHandler(CommandMap.java:191)
在javax.activation.DataHandler.getDataContentHandler(DataHandler.java:594)
在javax.activation.DataHandler.getContent(DataHandler.java:522)
在javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1395)
在its.util.MBoxMessage.getHtmlContent(MBoxMessage.java:166)
在its.util.MBoxMessage.getHtmlContent(MBoxMessage .java:159)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at coldfusion.runtime.StructBean.invoke(StructBean.java:502)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393)
at cfmessage2ecfm263917690.runPage(\web.shares\web\goat\cf\courses\classlist\message .cfm:216)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416)
ColdFusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:363)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java: 40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:87)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
at coldfusion.filter.ClientScopePersistenceFilter .invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
在coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
在coldfusion.filter.CachingFilter.invoke(CachingFilter。 java:53)
at coldfusion.CfmServlet.service(CfmServlet.java:200)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at jrun.servlet.FilterChain .doFilter(FilterChain.java:86)
at com.intergral.fusionreactor.filter.FusionReactorFilter.B(未知源)
at com.intergral.fusionreactor.filter.FusionReactorFilter.A(未知来源)
at com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(未知源)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at coldfusion.monitor.event.MonitoringServletFilter .doFilter(MonitoringServletFilter.java:42)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
在jrun.servlet.FilterChain.service(FilterChain.java:101)
在jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
在jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain。 java:42)
在jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
在jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
在jrun.servlet .jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
在jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
在jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable(ThreadPool .java:428)
at jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:581) at javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:535) at javax.activation.CommandMap.createDataContentHandler(CommandMap.java:191) at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:594) at javax.activation.DataHandler.getContent(DataHandler.java:522) at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1395) at its.util.MBoxMessage.getHtmlContent(MBoxMessage.java:166) at its.util.MBoxMessage.getHtmlContent(MBoxMessage.java:159) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at coldfusion.runtime.StructBean.invoke(StructBean.java:502) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393) at cfmessage2ecfm263917690.runPage(\web.shares\web\goat\cf\courses\classlist\message.cfm:216) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:363) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:87) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:53) at coldfusion.CfmServlet.service(CfmServlet.java:200) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at com.intergral.fusionreactor.filter.FusionReactorFilter.B(Unknown Source) at com.intergral.fusionreactor.filter.FusionReactorFilter.A(Unknown Source) at com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(Unknown Source) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at jrun.servlet.FilterChain.service(FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

推荐答案

我从CF的lib文件夹中删除了activation.jar文件。 javax.activation类在jrun.jar中重复,两个JAR文件都在CF的类路径中。看起来这些类在activation.jar中是较新的,但是删除它们对自定义类有所帮助。希望CF中的什么都不依赖于较新的类。

I removed the activation.jar file from CF's lib folder. The javax.activation classes are duplicated in jrun.jar, and both JAR file are in CF's classpath. It looks like the classes are newer in activation.jar, but removing them did the trick for the custom class. Hopefully nothing in CF is relying on the newer classes.

这篇关于com.sun.mail.handlers.text_plain不能转换为javax.activation.DataContentHandler的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆