標籤:bsp 開始 訪問 解決 echo 問題 方案 java test 查看
1 測試Test 類的時候突然遇到一個很奇怪的問題,網上搜了很多資料才找到解決辦法,大多數情況是因為類加了包名編譯,執行的時候沒有到包下去執行。與我遇到的情況不一樣。
問題:寫了一個測試類別Test,在cmd下javac Test .java 能通過編譯,並且產生了Test .class 檔案,但是在執行時卻報錯:
java Test
1 c:\>java Test2 錯誤: 找不到或無法載入主類 Test
可以肯定環境變數沒有配錯,因為直接執行java 與javac 命令都沒有問題。很多朋友都遇到過這個問題,原因是類加了包名導致 .Java檔案與 .class檔案不在同一路徑引起的,而我的這個測試類別沒有加任何包名。
解決方案:
① 可以通過 java -cp %classpath; Test 命令來執行,結果正確:
1 c:\>java -cp %classpath; Test2 Hello Servlet
② 使用echo %classpath 或者 set classpath,查看classpath環境變數,發現只顯示目前使用者的CLASSPATH值,系統裡的CLASSPATH變數沒有JDK lib 的絕對路徑: .;D:\Program Files\Java\jdk1.7.0_80\lib; 。仔細回想,以前剛開始安裝完JDK時,並沒有配置過CLASSPATH,當時編譯通過之後,可以在當前檔案夾下執行對應的 .class檔案的。
為什麼現在又報錯了呢,仔細檢查了一下發現系統變數裡配置了CLASSPATH,但是裡面沒有JDK的lib路徑, .;D:\Program Files\Java\jdk1.7.0_80\lib; ,當初為了能夠在系統的任何位置訪問Tomcat下的servlet-api.jar 包,給系統變數裡配置了CLASSPATH,到這裡明白了為什麼會出現上面的問題。
安裝完JDK之後,在系統變數裡要嗎就不配置CLASSPATH(即系統變數裡完全沒有這個變數),如果添加了CLASSPATH 變數就一定要給它配置上JDK的lib絕對路徑.
經過驗證,從系統變數裡刪除CLASSPATH,java Test 命令可以成功執行; 如果添加CLASSPATH 就要在最前面添加上JDK的lib絕對路徑:.;D:\Program Files\Java\jdk1.7.0_80\lib; java Test 命令也可以成功執行。
Java 找不到或者無法載入主類