[問題] package 與 classpath 的問題

看板java作者 (板釘龍史)時間16年前 (2008/04/22 22:27), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/2 (看更多)
大家好,我現在正在學習在 java 中使用自訂的 package,遇到了一個問題,雖然有 解決的方法,但我不知道原因為何,我將我遇到問題到解決的狀況敘述在下面: 假設自訂的 package 路徑為 e:\myJava,我寫了一個 Cbox 的 class 放在 e:\myJava\myData\math 下,程式碼為: package myPkg.math; public class Cbox { private int length; private int width; private int height; public Cbox(int l, int w, int h) { length = l; width = w; height = h; } public void show() { System.out.print("L = " + length + ", W = " + width); System.out.println(", H = " + height); System.out.println("Volume = " + vol()); } public int vol() { return length*width*height; } } 接下來,我寫了一個程式來測試我的 package,檔名 myTest.java,程式碼如下: import myPkg.math.Cbox; public class myTest { public static void main(String[] args) { Cbox box = new Cbox(3, 5, 7); box.show(); System.out.println("OK!"); } } 現在來了,我嘗試用兩種不同的情況去編譯跟執行。 《 Case 1 》 我將 myTest.java 放在 e:\myJava 下並使用下面的指令編譯 javac -cp e:\myJava myTest.java 編譯通過,然後我再用下面的指令執行 java -cp e:\myJava myTest 可以正確執行。 《 Case 2 》 我將 myTest.java 放在 e:\myJava\myTest 下,編譯的方法如同 case 1,一樣可以 正確編譯,但是在執行時,使用 case 1 的方法確不行執行,並出現以下的錯誤: Exception in thread "main" java.lang.NoClassDefFoundError: myTest Caused by: java.lang.ClassNotFoundException: myTest at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) 我一直找不出個所以然,後來我參考了其它書本,修改了一個小地方,就能順利執行了。 原本在 case 1 中執行的方法我改成了 java -cp e:\myJava; myTest 只是加了一個分號,就可以執行了,我對這個問題一直很疑惑,想請教板眾,希望能為 我解答一下。 我所使用的是 1.6.0_05 這個版本。 ※ 編輯: sawfish 來自: 125.224.214.136 (04/22 22:47)

04/23 09:34, , 1F
推程式用心排版 XD
04/23 09:34, 1F

04/23 10:14, , 2F
依LPH66講解完之後,您應該在自己的classpath加上"."路徑:)
04/23 10:14, 2F
文章代碼(AID): #183VMsnt (java)
文章代碼(AID): #183VMsnt (java)