我试图在带有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
谢谢! ^^
答案 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环境中运行程序