2012-10-16 100 views
0

當我在Java的初學者,我創造了這個類:錯誤編譯Java源文件

javac C:\Users\Aimad\Desktop\test.java 

class test 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World!"); 
    } 
} 

爲test.java,當我這個CMD編譯它然後:

java C:\Users\Aimad\Desktop\test.class 

我收到此錯誤:

無法找到或加載主類C:\用戶\ Aimad \桌面\的Test.class

+4

'java -cp。測試'或使用IDE;) –

+1

'ls'或'dir'? –

+3

這是沒有看到類路徑...這只是因爲他添加了「.class」擴展 – mkhelif

回答

2

的問題,你寫的是什麼,你已經加入的「.class」。通過編寫這個命令,你已經指示Java.exe在你目前所在的目錄下的一個名爲「test」的目錄中尋找一個名爲「class」的類文件。爲了使你的代碼工作移除「.class」擴展名,你需要首先在命令行中導航到該文件。此外,持有主方法的類必須聲明爲「公共」。

代碼

public class test 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World!"); 
    } 
} 

命令行

cd C:\Users\Aimad\Desktop 
java test 
+0

爲了擴展Chris的答案,「真正的」Java應用程序通常會將類安排到* packages *中。例如,'java.util.HashMap'是'java.util'包中名爲'HashMap'的類的完全限定名。當你調用Java時,你沒有給出* filename *,而是* classname *,它已經知道在你要求的任何內容的末尾添加'.class'。 –

+0

'java'命令需要**類名**,而不是路徑或文件名。你在「命令行」下寫的是錯誤的。 – Jesper

+0

@Jesper剛剛意識到我的錯誤。我已經相應編輯了。 –

1

嘗試的部份::

java C:\Users\Aimad\Desktop\test 
+0

我試過這個,但我得到這個錯誤: 找不到或加載主類C:\ Users \ Aimad \ Desktop \ test –

+0

這個答案是錯誤的。 'java'需要一個完全限定的類名,而不是一個路徑名。 –

0

$ CD C:\用戶\ Aimad \桌面 $ java -cp。測試

,使類公共

運行時程序不需要指定的.class和路徑應該是完全合格的類名:)

+0

我試過這個,但我得到這個錯誤:無法找到或加載主類C:\用戶\ Aimad \桌面\測試 –

+0

請改變目錄到該位置,並嘗試。使用cd命令........ 1.st cd C:\ Users \ Aimad \ Desktop然後Java測試 – Akshay

+0

這個答案是錯誤的。 'java'需要一個完全限定的類名,而不是一個路徑名。 –

0

轉到所在的目錄.class文件是並輸入命令來運行你的程序。

0

對於execution,您無需編寫java C:\Users\Aimad\Desktop\test.class文件用於機器可讀,所以我們不需要調用它們。

只需添加public classname只有如java C:\Users\Aimad\Desktop\test

閱讀here

1

該解決方案可以是:

% cd C:\Users\Aimad\Desktop 
% java test 

% java -cp C:\Users\Aimad\Desktop test 

說明:

  1. java命令的參數必須是類的完全限定名。在你的情況下,因爲你的類是在「默認」包中聲明的,所以FQN是「測試」。

  2. java命令需要能夠通過類路徑獲得類(即「test.class」文件)。默認的java類路徑是.,因此第一種解決方案是轉換到包含「test.class」文件的目錄,並使其可以作爲「。\ test.class」訪問。第二種解決方案使用-cp參數來指定非默認類路徑。

注意,使用路徑名來識別類將無法正常工作,無論是與「.class」的後綴,或與「.class」的後綴去掉...(除以上)