首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 新手 CMD 編譯運行失敗排查:package 聲明導致類找不到

     編輯:Java 綜合教學

典型錯誤現象

E:\workspace>javac lee/Hello.java
E:\workspace>java Hello
錯誤: 找不到或無法加載主類 Hello

源代碼

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

根本原因

源文件開頭聲明 package lee;,意味著編譯產物 Hello.class **必須置於目錄結構 lee/Hello.class 下**,且運行時需使用全限定名 lee.Hello。

新手常在同級目錄下直接 javac Hello.java,導致 Hello.class 生成在當前目錄,與 package 聲明不符,JVM 類加載器按包名查找失敗。

兩種解決方案

方案一:刪除 package 聲明(適合練習階段)

// 刪除 package lee;
public class Hello { ... }

編譯運行均在當前目錄:

javac Hello.java
java Hello

方案二:遵循包目錄結構(正規做法)

  1. 建立目錄:mkdir lee
  2. 將 Hello.java 放入 lee/ 目錄。
  3. 在父目錄編譯:javac lee/Hello.java → 生成 lee/Hello.class。
  4. 在父目錄運行:java lee.Hello。

最佳實踐建議

  • **始終在包根目錄(源碼根目錄)執行 javac/java 命令**,使用相對路徑或全限定類名。
  • IDE(Eclipse/IDEA)自動管理輸出目錄結構,手動 CMD 練習時務必養成「包即目錄」的肌肉記憶。
  • 理解 -d 參數指定輸出根目錄:javac -d out lee/Hello.java → out/lee/Hello.class,運行時 java -cp out lee.Hello。

編譯成功運行失敗截圖 修正後運行成功截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved