看板 java 關於我們 聯絡資訊
謝謝darkk6的解答 當我把 Lib資料夾打包起來的jar檔就可以直接執行 但我做了另一個測試,我想做另一個UseJar的class去使用TestJar的function 所以我把test.jar放到 D:\java\workspace\testProject\Lib\show\test.jar [UseJar.java] D:\java\workspace\testProject\UseJar.java /*=============================================*/ import Lib.show.TestJar; class UseJar{ public static void main(String[] args) { TestJar objHiJava = new TestJar(); objHiJava.hiJava("UseJar"); } } /*==============================================*/ [編譯指令] D:\java\workspace\testProject> javac -cp D:\java\workspace\testProject\Lib\show\test.jar UseJar.java 產生UseJar.class [執行指令] D:\java\workspace\testProject> Case1) java UseJar 出現錯誤 Exception in thread "main" java.lang.NoClassDefFoundError: Lib/show/TestJar at UseJar.main(UseJar.java:4) Caused by: java.lang.ClassNotFoundException: Lib.show.TestJar at java.net.URLClassLoader$1.run(Unknown Source) 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) ... 1 more 我想應該是沒有指定classpath,所以我試了另一個方法 Case2) java -cp D:\java\workspace\testProject\Lib\show\test.jar UseJar 出現錯誤(錯誤: 找不到或無法載入主要類別 UseJar) 還是不行,但不知道為什麼這樣指定jar檔不行,又找了資料,試了第三種方法 Case3) java -cp .;Lib\show\test.jar UseJar 居然可以執行正確結果 我不懂我已經指定絕對路徑的Jar檔(case2),為何不行 case3多了一個'.'當前目錄的指定,就可以執行 環境變數的CLASSPATH=".;D:\java\workspace\testProject\" 誤打誤撞雖然結果正確,但卻不知所以然 麻煩各位糾正我錯誤的觀念,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.0.99 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418270968.A.54A.html ※ 編輯: JGC18 (39.10.0.99), 12/11/2014 12:11:39 ※ 編輯: JGC18 (39.10.0.99), 12/11/2014 12:12:28
kogrs: 都是classpath 的問題 . case1:漏了所有的classpath 12/11 13:06
kogrs: case 2: 漏了 UseJar 這個class 的classpath 12/11 13:07
kogrs: case3: classpath OK! 12/11 13:07
kogrs: case 3 的那個 "." 就是 UseJar 這個class 的classpath 12/11 13:08
JGC18: 原來如此,我懂了,非常感謝 12/11 17:39