获取javax.mail.MessagingException

时间:2011-09-02 10:50:23

标签: java email exception

我正在使用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.

任何解决这个问题的建议请...

4 个答案:

答案 0 :(得分:1)

你没有得到MessagingException,虚拟机抱怨它无法找到 MessagingException(虽然它可能正在寻找它,因为它想要抛出它,但这些都是以后的问题。)

检查你的mail.jar是否真的包含这个类,并检查你的mail.jar是否真的在classpath上。

最后可能发生的是该类与您的Java版本不兼容。例如,为1.5编译的类不会在1.4上运行。

答案 1 :(得分:1)

在eclipse中工作而不是在命令行中清楚地说明项目中存在多个版本的邮件jar。

前:

你有3个Jars,Jar X,Jar Y和Jar Z。

如果你知道JAR X可能已经捆绑在JAR Z中(在这种情况下是邮件jar,但有些不同的版本。

那么拥有同一个jar的多个版本有什么问题? 您有两个不同的版本,您将不知道哪个版本将在您的项目中引用。 (所以如果你在项目中从mail-2.jar中寻找一些类,如果通过类加载器引用mail-1.jar,你将得到类找不到异常)

那么它如何在Eclipse上正常工作? 在eclipse中你可以看到ORDER库有一个选项,这些将以相同的顺序引用,但是在命令提示符下运行时我们用来加载as lib / *加载所有收集,我们不知道哪个lib将首先加载。

如何识别罪魁祸首并解决问题?

选项1:

请参阅您正在使用的库的文档页面/用户指南,以查看它们中包含的内容。

选项2:

  1. 在eclipse中,在类路径顺序中将有问题的JAR(mail.jar)移到TOP。 (你的程序现在应该工作)
  2. 现在逐一降低订单,看看你收到错误的地方。 (如果您希望找到导致此问题的jar,请重复参考)

  3. 提取具有重复引用的jar,删除JAR中的副本并重新打包。 (如果需要)

答案 2 :(得分:0)

还要确保你还有java activation.jar jar。

您是否有机会使用App Server(例如Jboss),如果是这样,只需检查类加载模型(在jboss中使用单个类加载模型,您可能正在加载一个不是最新版本的jar)

答案 3 :(得分:0)

我也遇到了同样的错误。在我编译时,我正确地使用了罐子。在命令行上运行时,我发现没有包含mail.jar(javamail API)。