或許很多java初學(xué)者都會(huì)用javac、java命令運(yùn)行程序,運(yùn)行過(guò)幾次后就轉(zhuǎn)向開(kāi)發(fā)工具。我本人也是這樣,很久沒(méi)有用命令行去執(zhí)行java文件了,現(xiàn)在都是用eclipse、intellij idea等編譯工具直接編譯運(yùn)行。
昨天開(kāi)始學(xué)習(xí)《算法》,里面很多代碼都用到了命令行重定向文件實(shí)現(xiàn)輸入輸出,所以昨天用命令去執(zhí)行class文件時(shí)碰到了一個(gè)noclassdefounderror異常,網(wǎng)上說(shuō)的也很雜,看得"一頭霧水",其實(shí)還是基礎(chǔ)不好,搞清楚原理很多問(wèn)題就迎刃而解了。
idea編譯后java文件和class文件不在同一個(gè)目錄(后來(lái)發(fā)現(xiàn)和這沒(méi)關(guān)系)
重新建一些目錄測(cè)試
然后cmd進(jìn)入當(dāng)前目錄,javac編譯生成class文件,然后復(fù)制到out\com\test目錄
然后進(jìn)入該目錄(模擬idea目錄),java helloworld運(yùn)行報(bào)錯(cuò)
查了很多資料,發(fā)現(xiàn)只要在包的上一層目錄(src)或者在任意目錄添加classpath都可以運(yùn)行
方法一:
方法二:
終于成功運(yùn)行了,可以愉快地玩代碼了...
知識(shí)點(diǎn):
包是java中為了解決命名沖突而設(shè)置的,一個(gè)程序?qū)懥税蜎](méi)寫(xiě)在jvm中是兩個(gè)東西,若沒(méi)寫(xiě),默認(rèn)包,虛擬機(jī)會(huì)把所有的不寫(xiě)包名的類(lèi)規(guī)整在一起組成默認(rèn)包,默認(rèn)包時(shí)不需要注意文件包結(jié)構(gòu)
補(bǔ)充:idea 項(xiàng)目編譯后沒(méi)有class文件
問(wèn)題
idea項(xiàng)目突然無(wú)法運(yùn)行,提示找不到某個(gè)類(lèi)。查看了編譯輸出目錄out,發(fā)現(xiàn)沒(méi)有class文件。
嘗試解決
嘗試刪除out、重新導(dǎo)入項(xiàng)目、在gradle面板點(diǎn)擊刷新,都沒(méi)能解決問(wèn)題。
問(wèn)題解決
最后,點(diǎn)擊build->rebuild project解決。不明原因,先做下記錄。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/a1275302036/article/details/79277196