我从ColdFusion 8升级到ColdFusion 9.我有一个Java类,我从CF调用它读取和分析的内容mbox邮箱文件。类正常工作与CF 8,但它抛出一个错误,在CF 9的错误是:com.sun.mail.handlers.text_plain不能转换为javax.activation.DataContentHandler
com.sun.mail.handlers.text_plain不能转换到javax.activation.DataContentHandler
的错误是发生在Java代码从javax.mail.internet.MimeMessage调用getContent()函数的地方。基于消息的MIME类型,我将getContent()的返回值转换为String,MimeBodyPart或Part之一。
有没有人有任何想法如何解决这个问题?
这里是我的Java功能:
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堆栈跟踪:在javax.activation.MailcapCommandMap.createDataContentHandler
javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:581) (MailcapCommandMap.java:535) at javax.activation.CommandMap.createDataContentHandler(CommandMap.java:191) at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:594) at javax.activation.DataHandl er.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) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:25) at coldfusion.runtime.CfJspPage._invoke(CfJspPage())在Coldfusion.runtime.StructBean.invoke(StructBean.java:502) 处的ColdFusion.runtime.CfJspPage._invoke(Method.java:597) .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) 在coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:363) 在coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 在coldfusion.filter.PathFilter.invoke(PathFilter.java:87) 在coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) 在coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 在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) 在coldfusion.CfmServlet.service(CfmServlet.java:200) 在coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 在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) 在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 在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) at jrun.servlet.ServletEngi neService.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) 在jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 在jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
@stomcavage - 他们实际上存在于几个罐子(jdk的rt.jar等)。无论如何,至少有一些版本。我总是非常不愿意删除CF使用的罐子,而不知道它会带来什么影响。 – Leigh 2010-06-06 03:31:29