package package名稱 ;
Java 檔案未切割前
檔案:CarTest0.java
package test0; class Car { public void show() { System.out.println("Class Car"); } } class CarTest0 { public static void main(String args[]){ Car car = new Car(); car.show(); } }編譯後,正常,同時新增 2 個類別檔案:Car.class 與 CarTest0.class
$ javac CarTest0.java ls -l total 48 -rw-r--r-- 1 elvismeng staff 395 4 3 12:13 Car.class -rw-r--r-- 1 elvismeng staff 324 4 3 12:13 CarTest0.class -rw-r--r-- 1 elvismeng staff 208 4 3 12:12 CarTest0.java執行時,系統回饋錯誤訊息,為什麼?
$ java CarTest0 Exception in thread "main" java.lang.NoClassDefFoundError: CarTest0 (wrong name: test0/CarTest0) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)這是因為我們在 CarTest0.java 第一行新增 package test0; 即將這類別包裝在 test0 這套件中。套件 package 在實體上可被視為檔案夾,因此,我們手動新增一個資料夾,此資料夾必須與程式中的 package名稱一致,在這裏我們新增一個資料夾為 test0,然後將程式移入到此資料夾中。
編譯程式
$ javac test0/CarTest0.java檢視編譯後結果
$ ls -l test0 total 24 -rw-r--r-- 1 elvismeng staff 395 4 3 12:21 Car.class -rw-r--r-- 1 elvismeng staff 324 4 3 12:21 CarTest0.class -rw-r--r-- 1 elvismeng staff 208 4 3 12:12 CarTest0.java執行結果
$ java test0.CarTest0 Class Car若不想手動新增資料夾,可用 javac -d 的指令由系統產生
$ javac -d ./ CarTest0.java檢視編譯結果
$ ls -l test0 total 16 -rw-r--r-- 1 elvismeng staff 395 4 3 12:36 Car.class -rw-r--r-- 1 elvismeng staff 324 4 3 12:36 CarTest0.class
沒有留言:
張貼留言