Java mail包出现"MimeMessage contains object of type javax.mail.util.SharedByteArrayInputStream instead of MimeMultipart"错误的修正办法
2007-06-25 14:00
501 查看
这个问题曾出现于本人制作的java mail应用程序部署中。在IDE中未出现任何问题,只是在打包部署时(我是将java mail的所有class文件与我开发的程序一同打到jar中便于部署),一发mail就在Transport.send()时报此异常。
这个问题,直译的解释是,在发送邮件时,MimeMessage中包含的对象是javax.mail.util.SharedByteArrayInputStream,而不是MimeMultipart。但是就算收到的邮件原封不动地发出去,也还是会报同样的错,而且在IDE里面没问题,打成jar包运行就报错。于是便猜想,应该是环境问题。上网搜这个报错,国内的论坛、网站上,根本找不到对这一错误地解决办法描述,后来在一英文论坛上,发现了端倪。
原来,java mail这个工具包的那个jar,有很多引用到的文件,并没有放到class文件的文件夹下,而是放到了jar文件的META-INF文件夹下,其中就有很重要的mailcap文件。这个文件是用来parse MimeMessage用的,没有了这个文件,message就不会被parse成MimeMultipart,而是会直接以字节流的方式交给Transport类来发送。而Transport类不能发送字节流内容。
在我的这个case里面,由于我是把java mail的class文件直接加到我的jar包中,所以java mail的jar文件中的META-INF的内容就被丢弃了。解决方法很简单,转而将我自己写的程序的包、class文件打到java mail的jar里面,然后在MANIFEST.MF的第二行里面指明自己的主类就可以了。(加入Main-Class: XXXX.XXXX就可以了)
这个问题,直译的解释是,在发送邮件时,MimeMessage中包含的对象是javax.mail.util.SharedByteArrayInputStream,而不是MimeMultipart。但是就算收到的邮件原封不动地发出去,也还是会报同样的错,而且在IDE里面没问题,打成jar包运行就报错。于是便猜想,应该是环境问题。上网搜这个报错,国内的论坛、网站上,根本找不到对这一错误地解决办法描述,后来在一英文论坛上,发现了端倪。
原来,java mail这个工具包的那个jar,有很多引用到的文件,并没有放到class文件的文件夹下,而是放到了jar文件的META-INF文件夹下,其中就有很重要的mailcap文件。这个文件是用来parse MimeMessage用的,没有了这个文件,message就不会被parse成MimeMultipart,而是会直接以字节流的方式交给Transport类来发送。而Transport类不能发送字节流内容。
在我的这个case里面,由于我是把java mail的class文件直接加到我的jar包中,所以java mail的jar文件中的META-INF的内容就被丢弃了。解决方法很简单,转而将我自己写的程序的包、class文件打到java mail的jar里面,然后在MANIFEST.MF的第二行里面指明自己的主类就可以了。(加入Main-Class: XXXX.XXXX就可以了)
相关文章推荐
- 出现错误 Element type "LinearLayout" must be followed by either attribute specification,">"or"/>"的解决办法
- while loading shared libraries: libIce.so.33: cannot open shared object file: No such fi"错误的原因和解决办法
- 执行Hive时出现org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.NumberFormatException: For input string: "1s"错误的解决办法(图文详解)
- Android开发中遇到的问题(五)——Eclipse导入Android项目出现"Invalid project description overlaps the location of another project"错误的解决办法
- nginx升级到 0.8.53 之后,使用老的配置出现duplicate MIME type "text/html"问题的解决办法
- input type="file" 选取文件路径时出现fakepath问题IE浏览器解决办法
- object of abstract class type "我的类" is not allowed 解决方案
- XCode中互相包含引起的"property with 'retain(or strong)' attribute must be of object type"错误与解决
- 发送激活邮件时出现java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法
- The content of element type "web-app" must match……等 问题之解决办法
- 验证参数传递引发的Java编译错误“No enclosing instance of type XXX is accessible" 及匿名内部类
- java错误:the hierarchy of type "类名" is inconsistent
- 安装sqlserver2008时出现“Rule "Previous releases of Microsoft Visual Studio 2008" failed.”错误的解决办法
- "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
- 关于[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]找不到指定文件的解决办法
- ArcGIS API for Flex制作程序发布后出现错误:"访问 URL 时遇到安全性错误" 解决办法尝试(学习笔记)
- JavaMail的com/sun/mail/util/LineInputStream错误 以及解决办法
- 在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法
- error while loading shared libraries: xxx.so.x"错误的原因和解决办法
- Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream