我從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