gpt4 book ai didi

java.lang.ClassCastException : com. sun.mail.handlers.multipart_mixed 无法转换为 javax.activation.DataContentHandler

转载 作者:行者123 更新时间:2023-11-30 05:42:31 25 4
gpt4 key购买 nike

part.writeTo(out);抛出java.lang.ClassCastException:

com.sun.mail.handlers.multipart_mixed cannot be cast to javax.activation.DataContentHandler

private static void getBodyAsRFC822(
MimePart part, boolean ignoreHeaders, ByteArrayOutputStreamout) {
try {
out.reset();

if (ignoreHeaders) {
OutputStream os = MimeUtility.encode(out, part.getEncoding());
part.getDataHandler().writeTo(os);
os.close();
} else {
part.writeTo(out);
out.close();
}
}
catch (Exception e) {
_log.error(e);
}
}

这是我的 build.gradle

compileOnly group: 'com.liferay', name: 'com.liferay.portal.instance.lifecycle', version: '2.0.0'
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.46.0"
compileOnly group: "org.osgi", name: "org.osgi.core", version: "6.0.0"
compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"

compileInclude group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compileInclude group: 'org.apache.mina', name: 'mina-core', version: '2.0.16'
compileInclude group: 'javax.mail', name: 'mail', version: '1.4'
compileInclude group: "javax.servlet", name: "servlet-api", version: "2.5"

但是multipart_mixed 实现了DataContentHandler,因此它应该是可转换的。为什么不是?

最佳答案

每当子类显然无法类型转换为其合法的父类(super class)时,就会有重复的类,由不同的类加载器加载。找到加载激活(父类(super class))类的位置,消除除一个之外的所有类(通常您需要消除您自己的项目带来的一个类)并使用框架中提供的类。

异常消息命名了有问题的类,但省略了参与游戏的类加载器,这就是为什么该消息在第一次尝试理解它时没有多大意义。一旦您了解了多个类加载器,即 javax.activation.DataContentHandler 的多个实例,它就更有意义了。

编辑:使用 build.gradle 中的 compileIninclude 语句,您可以有效地将所有依赖项捆绑到您自己的 jar 文件中。但是框架有自己的这些类版本,虽然它们都具有相同的名称,但它们现在将是不同的版本(不仅仅是数字版本),通过不同的类加载器加载。如果您明显依赖于在 OSGi 运行时中找不到的某些内容,则只应使用 compileInclude。相反,请使用 compileOnlycompile 作为默认值,并将附加依赖项与模块一起部署到运行时。

检查this article了解您所做工作的详细说明。

关于java.lang.ClassCastException : com. sun.mail.handlers.multipart_mixed 无法转换为 javax.activation.DataContentHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55403413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com