ram*_*esh 1 java exception classcastexception
嗨,我得到以下异常
线程"main"中的异常java.lang.ClassCastException:javax.mail.util.SharedByteArrayInputStream无法强制转换为javax.mail.Multipart
我在Eclipse IDE中没有得到任何编译异常,但是当我尝试构建项目时,我得到了这个异常.
在构建项目之后,我通过java -jar运行项目,因此它不满足if(内容实例的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`
Run Code Online (Sandbox Code Playgroud)
请任何人帮助我解决这个问题..
提前致谢...
message.getContent()返回javax.mail.util.SharedByteArrayInputStream此处,但SharedByteArrayInputStream不能转换为Multipart实例,因为您可能不一定有多部分消息.
你可以检查它的mimetype是否是一个多部分:
if (message.isMimeType("multipart/*") {
Multipart mp = (Multipart)message.getContent();
// more stuff
}
Run Code Online (Sandbox Code Playgroud)
或者你可以做...的实例
if (message.getContent() instanceof Multipart) {
Multipart mp = (Multipart)message.getContent();
// more
}
Run Code Online (Sandbox Code Playgroud)