2010-10-27 283 views
1

我試圖從命令行運行java程序。我試着按照here提到的步驟操作。但是當我嘗試運行javac Hello.java時,它拋出的錯誤是這樣的程序不存在。我試圖給java Hello.java並得到了錯誤:從命令行運行Java程序

Exception in thread "main" java.lang.NoClassDefFoundError: Hello/java 
Caused by: java.lang.ClassNotFoundException: Hello.java 
     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: Hello.java. Program will exit. 

這裏有什麼問題。我該怎麼做?

編輯:我在我的代碼文件Hello.java中有很多類。會導致任何問題嗎?

+0

您使用的是軟件包嗎?你看到Hello.class了嗎? – codaddict 2010-10-27 15:13:05

回答

5

運行,你需要做的程序:

java Hello 

這是java後跟類名沒有擴展

+0

我仍然收到上面粘貼的「ClassNotFoundException」。我的代碼在eclipse中運行良好。 – devnull 2010-10-27 15:09:37

+0

或者,根據你的環境,「java -classpath.Hello」 – 2010-10-27 15:10:24

+0

你可以編輯你的問題來清楚地說明,在運行你用'java Hello'編程時它仍然不起作用嗎?你可以把運行'java Hello'時得到的堆棧跟蹤? – Guillaume 2010-10-27 15:17:19

6

首先,你應該編譯

javac Hello.java 

Java代碼然後運行它

java Hello 

在這兩種情況下,請確保您的類路徑設置正確......

+0

我在哪裏可以找到javac。它不在jre /../ bin – devnull 2010-10-27 15:13:26

+0

javac在JDK – 2010-10-27 15:14:48

+0

http://www.oracle.com/technetwork/java/javase/downloads/index.html - JRE將能夠「運行」 ,JDK能夠編譯。 – Matthieu 2010-10-27 15:19:50

1

正如聲明其他人回答,首先,您必須使用java Hello運行您的應用程序,而不是java Hello.java

其次,你必須檢查你的CLASSPATH是否設置正確。看來你的變量未設置或不整合當前目錄,即.

這樣跑:

javac -classpath . Hello.java 
java -classpath Hello 

set CLASSPATH=. 
javac Hello.java 
java Hello 

當然,定義CLASSPATH作爲用戶/系統變量在你的Windows系統中是一個更好的解決方案!

1

如果Hello.java包含在包中,您將不得不創建合適的目錄結構。即如果Hello.java包含在包com.stackoverflow中,則必須創建文件夾com/stackoverflow並將Hello.java放在此文件夾中。從根文件夾則必須啓動

java com.stackoverflow.Hello

3

首先,Java要求每個文件最多一個公共類。沒有

public class this { 
} 

public class that { 
} 

你可以有

class this { 
    class that { 
    } 
} 

,如果你需要。

編輯或在文件中。java:

public class this { 
} 

class that { 
} 

javac將不會在jre文件夾中。你有沒有安裝jdk?它在許多計算機上都不會默認出現。它通常位於「C:\ Program Files \ Java \ jdk1.6.0_05 \ bin \ javac.exe」或類似的路徑中。

+0

安裝jdk之後,我可以運行javac Hello.java,然後運行java Hello。它運行正常,雖然我有多個(非嵌套)類。 – devnull 2010-10-27 15:33:11

+0

這是正確的 - 編輯帖子。只有一個公共類,它必須與文件具有相同的名稱。 – 2010-10-27 17:43:49

+0

此外,eclipse的javac位於不同的位置,而在IBM RAD(基於eclipse)中,它不在PATH環境變量中。我不確切知道它會在哪裏。對困惑感到抱歉。 – 2010-10-27 17:51:37