【发布时间】:2011-08-26 05:54:28
【问题描述】:
您好,我收到以下异常
线程“main”java.lang.ClassCastException 中的异常:javax.mail.util.SharedByteArrayInputStream 无法转换为 javax.mail.Multipart
我在 Eclipse IDE 中没有遇到任何编译异常,但是当我尝试构建项目时,我遇到了这个异常。
构建项目后,我通过 java -jar 运行项目,因此它不满足 if(content instanceof Multipart) 条件,但是当我从 Eclipse IDE 运行时,它工作正常。任何指针都会对我有很大帮助
从 Eclipse IDE 我得到 megssage.getContent() 作为 javax.mail.internet.MimeMultipart@1dc0e7a 但是当使用 jar 文件运行时,我得到的内容为 javax.mail.util.SharedByteArrayInputStream@2f0d54
请你告诉我它们之间有什么区别。
修改后的代码为:
InputStream inStream = null;
if(!message.getContentType().contains("text/plain")){
Object content = message.getContent();
if (message.isMimeType("multipart/*")) {
//message.isMimeType("multipart/*")||
Multipart multipart = (Multipart) content;
for (int j = 0; j < multipart.getCount(); j++) {
BodyPart bodyPart = multipart.getBodyPart(j);
inStream = bodyPart.getInputStream();
fileName=bodyPart.getFileName();
}
}
else{
System.out.println("content not instance of multipart");
}`enter code here`
请任何人帮助我解决这个问题..
提前谢谢...
【问题讨论】:
-
您确定您提供的是相同的来源吗?
-
是的,我提供相同的来源......
-
我在我的项目中看到了类似的东西,我注意到 getContent() 的文档指出“对于 DataHandler 系统未知的内容类型,输入流作为内容返回。”在不同的上下文中执行代码是否有可能创建使用不同 DataHandler 的消息?也许在 OP 的情况下,他的 Eclipse 类路径会找到构建 Message 的邮件类的不同版本,然后他的命令行类路径会找到,它们会实例化不同的 DataHandler。
标签: java exception classcastexception