这涉及尝试运行网络应用程序。代码编译正确,但是在尝试使用“java SendMail”运行时,java返回:
C:\Butte>java SendMail
Exception in thread "main" java.lang.NoClassDefFoundError: SendMail (wrong name:
je3/net/SendMail)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
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: SendMail. Program will exit.
这是一个简单的配置问题。我有一个最近足以支持其他网络代码的Java包。源代码是:
package je3.net;
import java.io.*;
import java.net.*;
/**
* this software sends e-mail via a mailto : url
*/
public class SendMail {
public static void main(String[] args) {
// --- SNIP ----
}
}
非常感谢,
乔尔
答案 0 :(得分:3)
您的课程在je3.net
个包中,因此您需要将其作为:
java je3.net.SendMail
然而,听起来你可能也需要以不同的方式编译它 - 因为它会将je3\net\SendMail.class
视为文件名。基本上,您的源和输出应该与您声明的包结构相匹配。
你没有 为源代码执行它 - 你可以只写:
javac -d . SendMail.java
java je3.net.SendMail
因为-d .
部分会使javac
为您创建正确的目录结构。但是,我个人将SendMail.java
移至je3\net
目录。