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

无法在linux中运行java发送电子邮件。NoClassDefFoundError javax/mail/Authenticator,java,linux,jar,Java,Linux,Jar,我试图在Linux服务器上运行Tomcat,这是一个发送电子邮件的简单java 我在一个目录中有myClass.java和mail.jar 我已经做到了: # javac -cp mail.jar myClass.java 并且不返回错误,但是 当我尝试这样运行它时: # java myClass 我得到这个错误: Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Authenticator Cause

我试图在Linux服务器上运行Tomcat,这是一个发送电子邮件的简单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上完全是这样运行的,而且可以正常工作。我还试着用一个系统来做一个简单的类

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

Im使用java 1.6.0_22


谢谢^^

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

默认情况下,当您在命令行中使用命令(如JavaMyClass)运行java程序时,您运行的是JavaSE(Standard Edition)环境。另一个流行的环境是JavaEE(企业版)

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

您可以编译代码这一事实一定意味着在eclipse构建路径(如果您使用eclipse)的某个地方有一个依赖项jar,而您在运行时(例如:mail.jar)中没有包含该jar

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

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

或者在JavaEE环境中运行程序

类中不会神奇地包含
mail.jar
。(谁支持这个??)java-cp.:mail.jar myClass