1. 程式人生 > >今天遇到一個開心事,在eclipse編寫的程式碼在命令視窗中編譯後無法執行,提示 “錯誤: 找不到或無法載入主類”

今天遇到一個開心事,在eclipse編寫的程式碼在命令視窗中編譯後無法執行,提示 “錯誤: 找不到或無法載入主類”

java中帶package和不帶package的編譯執行方式是不同的。

首先來了解一下package的概念:簡單定義為,package是一個為了方便管理組織java檔案的目錄結構,並防止不同java檔案之間發生命名衝突而存在的一個java特性。不同package中的類的名字可以相同,只是在使用時要帶上package的名稱加以區分

package debug;

class Demo {

  

1、帶package執行方法

我的程式碼目錄結構為:D:\WorkSpace-Java\java_excise\src\debug\HelloWorld.java

1 package
debug; 2 3 class HelloWorld { 4 public static void main(String[] args){ 5 System.out.println("hi"); 6 } 7 }

在eclipse中執行能正常打印出內容,此時我想在命令視窗中去重新編輯並執行該檔案時,即提示錯誤 找不到或無法載入主類

操作步驟如下:

1、win + R 調出執行視窗並輸入 cmd 開啟命令視窗

2、切換碟符 輸入: e:  然後回車

3、進入到程式碼目錄: cd D:\WorkSpace-Java\java_excise\src\debug

4、編譯檔案: javac HelloWorld.java

5、執行該檔案: java HelloWorld,報錯了,如下圖:

原因:報這個錯原因是在當前目錄下,然後根據程式碼檔案中引用的包名會在當前debug目錄下再去找debug目錄(這個目錄肯定不存在,如果你想驗證是不是這樣,可以手動在當前debug目錄下再新建一個debug目錄,然後把HelloWorld.class檔案拷過去重新執行),所以就會報找不到或者無法載入主類,那麼要如何才能正常執行呢,想到了這個程式碼執行的流程要先找到該debug路徑,那是不是我只要返回到當前debug目錄的上一級目錄,然後重新執行該java檔案不就可以找得到debug目錄了

,話不多說直接上驗證截圖,從圖中可以看到執行成功了:

 

2、不帶package執行方法

1 //package debug;
2 
3 class HelloWorld {
4     public static void main(String[] args){
5         System.out.println("hi");
6     }
7 }

操作步驟如下:

1、win + R 調出執行視窗並輸入 cmd 開啟命令視窗

2、切換碟符 輸入: e:  然後回車

3、進入到程式碼目錄: cd D:\WorkSpace-Java\java_excise\src\debug

4、編譯檔案: javac HelloWorld.java

5、執行該檔案: java HelloWorld,直接就得出正確的結果了,如下截圖:

 

 總結:

1、一般通過IDE開發的程式碼,在新建class檔案時,會預設在檔案首行產生一個 package xxx;的程式碼,這樣的程式碼是可以直接在IDE進行編譯並正常執行的(前提是程式碼無基本的語法錯誤),如果想要在DOS命令視窗中編譯並執行的話,此時就需要將檔案目錄切換至程式碼所在目錄的上一級目錄,然後用 java xxx進行執行,否則會報錯,簡單做法為:編譯檔案時javac xxx.java在當前程式碼路徑下,執行檔案時需要返回到程式碼所在目錄上一級目錄執行,執行時同時要帶上包名 java xx.xxx (xx代表包名,xxx代表java類名)。

2、如果是通過Notepad++建立的java檔案,一般首行都不會帶上package,這樣在命令視窗中編譯和執行就不需要額外去切換目錄了,可以在當前目錄直接執行。