[英]getting javax.mail.MessagingException
我正在使用javax.mail .jar文件读取邮件。 但是当我运行代码时,我得到以下异常。
我在classpath中添加了mail.jar。
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingE
xception
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: MasterProcess. Program will exit.
解决这个问题的任何建议请...
在eclipse中而不是在命令行中工作清楚地表明项目中存在多个版本的mail jar。
例如:
您有3个罐,罐X,罐Y和罐Z。
不知不觉中,您可能已经知道JAR X可能已经捆绑在JAR Z中(在这种情况下,为邮件罐,但版本有所不同)。
那么,拥有多个版本的同一jar会有什么问题呢? 您有两个不同的版本,并且您将不知道将在项目中引用哪个版本。 (因此,如果您在项目中的mail-2.jar中寻找某个类,那么如果类加载器对mail-1.jar进行了引用,则会导致找不到类异常)
那么它如何在Eclipse上正常工作? 在eclipse中,您可以看到有一个ORDER库选项,这些库将以相同的顺序被引用,但是在命令提示符下运行时,我们曾使用过as as lib / *来加载所有要收集的as / lib,我们将不知道哪个lib将首先加载。
如何确定问题的根源并解决问题?
选项1 :
请参阅您正在使用的库的文档页面/用户指南,以了解它们所包含的内容。
选项2:
现在,逐个降低订单,以查看错误的出处。 (如果您希望找到引起此问题的罐子,请重复参考)
提取具有重复引用的jar,删除JAR中的重复项并将其重新打包。 (如果需要的话)
您没有得到MessagingException
,VM抱怨说它找不到 MessagingException
(尽管可能是因为它想抛出它而正在寻找它,但这是以后要解决的问题)。
检查您的mail.jar是否实际上包含此类,并检查您的mail.jar是否确实在类路径上。
可能发生的最后一件事是该类与您的Java版本不兼容。 例如,为1.5编译的类不能在1.4上运行。
另外,请确保您还拥有Java Activation.jar jar。
您是否有机会与App Server(例如Jboss)一起使用,如果是,只需检查类加载模型(在具有单个类加载模型的jboss中,您可能正在加载最新版本的jars)
我也遇到了同样的错误。 我碰巧在编译时我正确地使用了罐子。 在命令行上运行它时,我注意到其中没有包括mail.jar(javamail API)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.