Java 找不到或者無法載入主類

來源:互聯網
上載者:User

標籤: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 找不到或者無法載入主類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.