繁体   English   中英

获取javax.mail.MessagingException

[英]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:

  1. 在eclipse中,按类路径顺序将有问题的JAR(此处为mail.jar)移至TOP。 (您的程序现在应该可以运行)
  2. 现在,逐个降低订单,以查看错误的出处。 (如果您希望找到引起此问题的罐子,请重复参考)

  3. 提取具有重复引用的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM