使用 JavaMail API 在 servicemix 下发送电子邮件时出现 ClassCastException
我正在使用 JavaMail API 在 servicemix 下发送带有附件的电子邮件。我使用的代码与独立运行的代码相同,但出现了一个奇怪的异常:
线程“pool-6-thread-5”中出现异常java.lang.ClassCastException: com.sun.mail.handlers.multipart_mixed 位于 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 引起的,servicemix 提供了自己的 mailcap 副本和来自 java mail api 的其他文件和激活,通过 META_INF 公开。
I'm sending email with attachments under servicemix using the JavaMail API. I'm using the same code that works stand-alone, and I get a strange exception:
Exception in thread "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)
I've tried a lot of tricks, including importing package com.sun.mail.handlers in the bundle definition and those described in this thread.
The project is java 1.5 code run by JDK 1.5, FuseESB 4.2
-- edit --
The problem was caused by weblogic.jar loaded into servicemix, which provided own copies of mailcap and other files from java mail api and activation, exposed via META_INF.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这听起来像是一个冲突的阶级案件。
然后您的应用程序使用包含 ab.jar 和 cd.jar 的类路径运行。
Java从ab.jar加载AB类,但实际上要加载的正确类是cd.jar中的AB。
也许您可以尝试在 jar 文件中搜索冲突的类。如果您使用 Eclipse,则可以轻松完成。将所有 jar 包含到项目的构建路径中,然后按:CTRL+SHIFT+T(Open Type 的快捷键),键入:multipart_mixed 并查看有多少个 jar 有它。
也可能与java运行时库中的activation.jar冲突。
It sounds like a conflicted Class case.
And then your application run with classpath including ab.jar and cd.jar.
Java load Class AB from ab.jar, but actually the correct Class to be loaded is AB from cd.jar.
Perhaps you can try searching the jar files for conflicted classes. Can be done easily by if you are using Eclipse. Include all jars to project's build path and then press: CTRL+SHIFT+T (shortcut for Open Type), key in: multipart_mixed and see how many jars have it.
Could also conflict with activation.jar in java runtime library.