1. 程式人生 > 其它 >java編譯通過,執行卻提示找不到或無法載入主類

java編譯通過,執行卻提示找不到或無法載入主類

問題:

HelloWorld.java

 1 package myP101;
 2 
 3 public class HelloWorld {
 4     public static void main(String[] args) {
 5         System.out.println("HelloWorld!");
 6         System.out.println("請您計算一個數字的計算式:");
 7         System.out.println("計算式的結果是:" + 21 + 87 + 61 * 4 + 33);
 8         System.out.println("計算式的結果是:" + (21 + 87 + 61 * 4 + 33));
9 10 // 資料型別轉換 11 int xx = 200, yy = 110, zz = 300; 12 Integer mm, nn = 91, tt; 13 float aa = 10, bb = 11.2f, cc = 21.98f; 14 double dd = 91, ee = 21.7, ff = 83E2; 15 String str = "The Result is:"; 16 String res = new String(); 17 18 mm = xx;
19 yy = nn; 20 tt = (int)bb; 21 ee = bb; 22 cc = (float)ff; 23 bb = yy; 24 res = mm.toString(); 25 String xls = String.valueOf(aa); 26 System.out.println(str + mm + yy +tt); 27 System.out.println(str + cc + bb); 28 System.out.println(res + xls);
29 } 30 31 }

Eclipse執行無誤:

命令列執行報錯:
EditPlus編譯通過,執行報錯:

解決方案:

檔案路徑:
解決辦法:

  • 在包下的類,在Java原始檔的地方編譯後,需要到最外層包的上一級目錄下執行,而且類前面需要帶包名,以.隔開。


EditPlus中的解決辦法:

Editplus中配置java的(帶包)編譯(javac)和執行(java)的方法




  • (CurSel).$(FileNameNoExt)(當前選中內容.不帶字尾名檔名稱)
    要先選中包名再執行:
    問題解決:

原因:

java編譯器不檢查類的目錄結構,換句話說,即便你在原始碼的第一行聲明瞭該類所在的包,在你對這個原始碼檔案進行編譯的時候,只要這個類不依賴於其他包,那麼編譯就不會報錯。而java的直譯器載入類,當需要解釋執行類時,直譯器會根據包結構尋找該類,所以執行該類的時候,必須在你宣告的包的基目錄下執行,才能夠讓java直譯器正確的找到該類。