2011-10-05 49 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

它現在運行,非常感謝你! –