1. 程式人生 > >關於java編譯通過,執行時出錯或找不到主類問題解決

關於java編譯通過,執行時出錯或找不到主類問題解決

    剛接觸java,倒騰了半天設施好環境變數,控制檯輸入java、javac、java -version後,輸出正確。終於可以程式設計序了,很激動,於是直接從老師發的現成的程式碼包裡面考了一份(其實自己敲一個的話,就不用這麼費勁,話又說回來,如果自己敲一份的話,自己也不會發現這個問題)。

     執行了 cd.. 、cd chapter1轉到所在資料夾

     輸入 :javac Hello.java    成功編譯

     緊接著輸入:java Hello   丟擲錯誤,無法載入主類,頓時心又涼了半截

    在網上搜集本都是說環境變數classpath設定有誤,可是我檢查了好多遍,查了很多關於環境變數設定的具體操作,發現自己並沒有寫錯。最後找到錯誤之處是我碰巧撞上了,哈哈哈,算是運氣吧。在此分享一下。

原來的程式碼:

package chapter1.例子1;

public class Hello{
   public static void main (String args[]){
      System.out.println("這是一個簡單的Java應用程式");
      Student stu=new Student();
      stu.speak("We are students");
   }
}
class Student{
   public void speak(String s){
      System.out.println(s);
   }
}



修改後:

public class Hello{
   public static void main (String args[]){
      System.out.println("這是一個簡單的Java應用程式");
      Student stu=new Student();
      stu.speak("We are students");
   }
}
class Student{
   public void speak(String s){
      System.out.println(s);
   }
}


可以發現只是刪除了這句話:

package chapter1.例子1;

為什麼會這樣?

       首先,包名指的什麼,其實簡單理解包名就是一個又一個的資料夾,這些資料夾是巢狀關係,父資料夾和子資料夾之間用 '.'(英文句號)隔開。

       如果一個類有包名,那麼就不能在任意位置存放它,否則虛擬機器將無法載入這樣的類。

       如果有一個這樣的包名:package  chapter1.例子1

       那麼儲存檔案的目錄結構中必須含有如下結構:...\chapter1\例子1

       按照這個原則修改資料夾

       原儲存路徑:C:\chapter1\Hello.java

       修改後:C:\chapter1\例子1\Hello.java

那含有包名的該怎麼編譯執行?

      首先是編譯:在 Hello.java 所在的資料夾下編譯  javac  Hello.java

      然後執行之前,首先要轉到包所在資料夾,對於這個程式來說就是 C

     然後 輸入: java  包名.主類名(java  chapter1.例子1.Hello)