找不到或無法加載主類的解決以及classpath的配置

問題描述①:
環(huán)境描述
  1. /JAVA_HOME環(huán)境變量已經(jīng)配置好了(javac , java等命令能夠正常使用)
  2. classpath環(huán)境變量設(shè)置為D:\
  3. F盤下有一個(gè)helloworld.java(內(nèi)部無package語句),并且通過javac命令編譯成helloworld.class文件
問題:命令行輸入java helloworld結(jié)果是

錯(cuò)誤: 找不到或無法加載主類 helloworld

問題解決①:

很顯然,classpath不能被配置為D:\,不然虛擬機(jī)會(huì)到D:\路徑下尋找helloworld.class,直接將classpath環(huán)境變量刪除即可(或者設(shè)置成F:\)

問題描述②:
環(huán)境描述:
  1. /JAVA_HOME環(huán)境變量已經(jīng)配置好了(javac , java等命令能夠正常使用)
  2. classpath環(huán)境變量已經(jīng)被刪除
  3. D:\javaproject\src\網(wǎng)絡(luò)編程目錄下有一個(gè)UDPreceive.java文件(內(nèi)部有package語句),用javac命令將其編譯成UDPreceive.class
問題:打開命令行輸入cd /d D:\javaproject\src\網(wǎng)絡(luò)編程將當(dāng)前目錄轉(zhuǎn)到D:\javaproject\src\網(wǎng)絡(luò)編程下,然后輸入java 網(wǎng)絡(luò)編程.UDPreceive,結(jié)果是

錯(cuò)誤: 找不到或無法加載主類 網(wǎng)絡(luò)編程.UDPreceive

問題解決②:

因?yàn)?code>UDPreceive.class位于網(wǎng)絡(luò)編程目錄下,而當(dāng)前目錄也是在這個(gè)文件夾,所以在當(dāng)前目錄下使用java命令會(huì)報(bào)錯(cuò),所以只要使用cd ..命令將當(dāng)前目錄退回到src目錄再使用java 網(wǎng)絡(luò)編程.UDPreceive就可以正常運(yùn)行了

總結(jié):

  • 對(duì)于內(nèi)部有package語句的.java文件,編譯后需要使用java 包名.類名來運(yùn)行
  • 當(dāng)使用java 包名.類名時(shí),如果沒有設(shè)置classpath就需要到包名的父目錄下執(zhí)行該命令

環(huán)境變量的設(shè)置

如果沒有設(shè)置classpath環(huán)境變量,那么我們每次執(zhí)行類文件就需要使用cd命令將當(dāng)前目錄調(diào)整到包名的父目錄下(有package語句的情況下),這樣做很麻煩.于是我們就需要設(shè)置classpath環(huán)境變量.

在問題②中,我們可以將classpath環(huán)境變量設(shè)置成D:\Program Files (x86)\_Java項(xiàng)目\我的Java\src,這樣的話我們就可以在任意目錄下使用java 網(wǎng)絡(luò)編程.UDPreceive

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容