2011-10-05 51 views
0

这涉及运行网络应用程序的尝试。该代码编译正确,但在试图与“Java的Sendmail的” Java的回报运行: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 ---- 
    } 
} 

非常感谢你,

乔尔

回答

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目录。

+0

它现在运行,非常感谢你! –