如何在Java中解決“找不到或無法載入主類包”問題?


編寫Java程式後,需要使用javac命令編譯它,這將顯示編譯時發生的錯誤(如有)。

解決這些錯誤併成功編譯程式後,將在當前資料夾中生成一個與類名相同的可執行檔案,副檔名為.class

然後,需要使用java命令執行它,如下所示:

java class_name

執行時,如果JVM找不到指定名稱的.class檔案,則會發生執行時錯誤,顯示“找不到或無法載入主類”錯誤,如下所示:

D:\sample>java Example
Error: Could not find or load main class Example
Caused by: java.lang.ClassNotFoundException: Example

解決方案

為避免此錯誤,需要指定.class檔案的絕對名稱(包括包名),該檔案位於當前目錄中。

以下是可能發生此錯誤的情況:

類名錯誤 - 您可能指定了錯誤的類名。

class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

錯誤

D:\>javac Example.java
D:\>java Exmple
Error: Could not find or load main class Exmple
Caused by: java.lang.ClassNotFoundException: Exmple

解決方案 - 在這種情況下,類名拼寫錯誤,需要更正。

D:\>javac Example.java
D:\>java Example
This is an example class

大小寫錯誤 - 需要使用與類名相同的大小寫來指定類名。Example.java與example.java不同。

class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

錯誤

D:\>java EXAMPLE
Error: Could not find or load main class EXAMPLE
Caused by: java.lang.NoClassDefFoundError: Example (wrong name: EXAMPLE)

解決方案 - 在這種情況下,類名大小寫錯誤,需要更正。

D:\>javac Example.java
D:\>java Example
This is an example class

包名錯誤 - 您可能在一個包中建立了.class檔案,並嘗試在沒有包名或使用錯誤的包名的情況下執行它。

package sample;
class Example {
   public static void main(String args[]){
      System.out.println("This is an example class");
   }
}

錯誤

D:\>javac -d . Example.java
D:\>java samp.Example
Error: Could not find or load main class samp.Example
Caused by: java.lang.ClassNotFoundException: samp.Example

解決方案 - 在這種情況下,執行時需要指定.class檔案所在的正確包名,如下所示:

D:\>javac -d . Example.java
D:\>java sample.Example
This is an example class

包含.class副檔名 - 執行檔案時,不需要在程式中包含.class副檔名,只需要指定類檔名即可。

錯誤

D:\sample>java Example.class
Error: Could not find or load main class Example.class
Caused by: java.lang.ClassNotFoundException: Example.class

解決方案 - 執行程式時不需要 .class副檔名。

D:\sample>java Example
This is an example class

更新於:2019年10月14日

5K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.