2010-02-19 99 views
4

我正在嘗試運行書「Head First Java」中的第一個示例之一;java - 缺少主類

public class MyFirstApp { 
public static void main (String[] args){ 
    System.out.println("I Rule!"); 
    System.out.println("The Worlds!"); 
} 
} 

「javac的」創建從java文件.class文件 - 但「Java」的抱怨「缺少主類」試圖運行.class文件時(我也嘗試java命令「。 ......」同樣的結果):

C:\>java \hfj\MyFirstApp.class 
Exception in thread "main" java.lang.NoClassDefFoundError: \hfj\MyFirstApp/class 

Caused by: java.lang.ClassNotFoundException: \hfj\MyFirstApp.class 
    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: \hfj\MyFirstApp.class. Program will exit. 

回答

6

你需要運行它

javac MyFirstApp.java 
java MyFirstApp 

從哪裏MyFistApp.java住的目錄。

+1

我試過在沒有.class擴展名的情況下運行它,但總是以完整路徑作爲參數,而不是從目錄本身。謝謝:) – Gero 2010-02-19 17:43:33

0

什麼是包名?也許你有類似的東西

package org.test;

在你的頭?

1

'javac'調用編譯器 - 以便您需要傳遞.java文件。

的Java「將運行編譯的代碼 - 到你通過編譯文件的名稱,但沒有任何擴展名:「Java的MyFirstApp」

指定文件的完整路徑,當你不應該工作在那個目錄中。但是你在保存javac和java程序的目錄中嗎?如果不是,那麼如果你沒有把它們放在你的PATH變量上,那些可能也需要絕對路徑。

+0

嚴格地說你傳遞的是類的名稱,而不是「名稱文件沒有.class「; D – 2011-09-16 11:10:33