无法在linux中运行java发送电子邮件。NoClassDefFoundError javax/mail/Authenticator
我试图在Linux服务器上运行Tomcat,这是一个发送电子邮件的简单java 我在一个目录中有myClass.java和mail.jar 我已经做到了:无法在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
# 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