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 lee;
public class Hello { ... }
編譯運行均在當前目錄:
javac Hello.java java Hello
mkdir leeHello.java 放入 lee/ 目錄。javac lee/Hello.java → 生成 lee/Hello.class。java lee.Hello。-d 參數指定輸出根目錄:javac -d out lee/Hello.java → out/lee/Hello.class,運行時 java -cp out lee.Hello。