1

我正在使用 JavaMail API 在 servicemix 下发送带有附件的电子邮件。我正在使用独立运行的相同代码,但出现了一个奇怪的异常:

线程“pool-6-thread-5”中的异常 java.lang.ClassCastException: com.sun.mail.handlers.multipart_mixed at org.apache.servicemix.specs.activation.OsgiMailcapCommandMap.createDataContentHandler(Osg iMailcapCommandMap.java:60)

我尝试了很多技巧,包括在包定义中导入包 com.sun.mail.handlers 以及在这个线程中描述的那些。

该项目是JDK 1.5,FuseESB 4.2运行的java 1.5代码

--编辑--

问题是由加载到 servicemix 中的 weblogic.jar 引起的,它提供了自己的 mailcap 副本和来自 java 邮件 api 和激活的其他文件,通过 META_INF 公开。

4

1 回答 1

0

这听起来像是一个冲突的类案例。

ab.jar 有 AB 类

cd.jar 也有 AB 类

然后您的应用程序使用包含 ab.jar 和 cd.jar 的类路径运行。Java 从 ab.jar 加载 Class AB,但实际上要加载的正确 Class 是来自 cd.jar 的 AB。

也许您可以尝试在 jar 文件中搜索冲突的类。如果您使用的是 Eclipse,则可以轻松完成。将所有 jars 包含到项目的构建路径中,然后按:CTRL+SHIFT+T(Open Type 的快捷方式),键入:multipart_mixed 并查看有多少个 jars。

也可能与 java 运行时库中的 activation.jar 冲突。

于 2011-07-19T15:47:27.217 回答