Java檔案編譯成功後的class檔案無法執行
阿新 • • 發佈:2019-02-06
平時用慣了Eclipse,今天偶爾在命令列介面想做一個Demo,測試一段程式碼。原本以為javac一下,java一下就可以得到自己想要的結果,可是結果大跌眼鏡,自己被一個問題卡主了:java檔案成功編譯,但當執行編譯後的class檔案卻報一個異常:NoClassDefFoundError。
當時的具體情況是這樣的:java檔案所在的package為com.fx.s1,當時的命令列所在路徑為 xx:\xxx\src\com\fx\s1\_
我就是在此路徑下先執行:javac Test1.java,執行成功,成功在當前路徑產生Test1.class檔案,編譯成功。
當我在此路徑下繼續執行:java Test1 ,結果就是NoClassDefFoundError。
當時百思不得其解,環境變數的CLASSPATH設定成功,沒有問題。那只有可能是命令列的問題。
改變執行命令,在class檔案明前加package名稱,即:java com.fx.s1.Test (注意:當前執行命令的路徑還是之前的路徑,沒有變),執行結果:錯誤: 找不到或無法載入主類 com.fx.s1.Test1.
鬱悶,在分析:java命令執行時,按照classpath配置情況看,是從當前目錄下,載入檔案的。所以如果我在com/fx/s1的目錄下,在執行class檔案,JVM會從新在當前目錄下繼續找package,所以有問題。
在改變一下,命令不變,改變路徑,將命令執行路徑退回到之前路徑的src下,即:xx:\xx\src。在此路徑下繼續執行:java com.fx.s1.Test1.
執行成功。