使用 JavaMail API 在 servicemix 下发送电子邮件时出现 ClassCastException

发布于 2024-11-24 16:18:05 字数 697 浏览 0 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼睛会笑 2024-12-01 16:18:05

这听起来像是一个冲突的阶级案件。

ab.jar 具有 AB 类

cd.jar 也有 AB 类

然后您的应用程序使用包含 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.

ab.jar has Class AB

cd.jar also has Class AB

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文