无法运行java在linux中发送电子邮件。 .NoClassDefFoundError javax / mail / Authenticator

时间:2013-01-29 21:37:37

标签: java linux jar

我试图在带有Tomcat的Linux服务器上运行一个简单的java来发送电子邮件。

我在目录

上有myClass.java和mail.jar

我已经做过:

# javac -cp mail.jar myClass.java

并且不会返回任何错误,但是......

当我尝试像这样运行时:

# java myClass

我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Authenticator
Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: myClass. Program will exit.

它奇怪,因为我在Windows上完全像那样运行它并且它有效。我也尝试在内部只有一个System.out做一个简单的类,然后运行,

但是我不知道为什么我没有获得Authenticator类,如果我已经检查它是否包含在mail.jar中

我正在使用java 1.6.0_22

谢谢! ^^

2 个答案:

答案 0 :(得分:0)

您在类路径中包含了mail.jar来编译它,您还应该在运行该类时包含它。

答案 1 :(得分:0)

默认情况下,当您使用 java MyClass 等命令在命令行中运行java程序时,您正在运行Java SE(标准版)环境。另一个流行的环境是Java EE(企业版)。

您的程序所抱怨的类(javax.mail.authentication)来自Java EE包,它在您的运行时肯定不存在

你可以编译你的代码的事实必须意味着你的eclipse构建路径上的某个地方有一个依赖jar(如果你使用eclipse)你没有包含在你的运行时(例如:mail.jar)

您需要运行程序,以便在运行时可以使用依赖项,例如:

java -jar /path/to/mail.jar MyClass

或者在Java EE环境中运行程序