問題描述①:
環(huán)境描述
- /
JAVA_HOME環(huán)境變量已經(jīng)配置好了(javac , java等命令能夠正常使用) -
classpath環(huán)境變量設(shè)置為D:\ - 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)境描述:
- /
JAVA_HOME環(huán)境變量已經(jīng)配置好了(javac , java等命令能夠正常使用) -
classpath環(huán)境變量已經(jīng)被刪除 -
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