第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)問(wèn)該怎么用命令行去編譯package中的java文件?

請(qǐng)問(wèn)該怎么用命令行去編譯package中的java文件?

元芳怎么了 2022-02-17 15:11:26
我寫(xiě)了兩個(gè)源文件 一個(gè)有main函數(shù)的 記做A.java 另一個(gè)是B.javaA.java 開(kāi)頭不加package ***; 的時(shí)候是可以成功的單獨(dú)編譯運(yùn)行的?,F(xiàn)在我想在A中使用B的內(nèi)容 所以在AB前面都加了 package ***; 的語(yǔ)句可是這樣編譯的時(shí)候只有B.java能通過(guò)編譯,A.java提示Exception in thread "main" java.lang.NoClassDefFoundError請(qǐng)問(wèn)這是怎么一回事,我怎樣做才能使AB都能通過(guò)編譯并運(yùn)行?另外是只要在包中文件頭都加上package 包名; 就行嗎?還是要寫(xiě)import之類(lèi)的?編譯的時(shí)候用的是這樣的命令:javac -d.B.javajavac A.java兩個(gè)編譯都通過(guò)運(yùn)行java A 的時(shí)候 提示Exception in thread "main" java.lang.NoClassDefFoundError
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

其實(shí)解決方案很簡(jiǎn)單,既然編譯器不能根據(jù)包名找到A類(lèi),那我們就把A類(lèi)的絕對(duì)路徑直接告訴編譯器不就可以了嗎?事實(shí)上就是這么做的,具體操作為:在命令行模式下進(jìn)入F:\test目錄,然后運(yùn)行編譯命令javac F:\test\edu\main\A.java,可以成功編譯生成A.class文件。(注意:如果不在此目錄下執(zhí)行編譯命令的話(huà),就要將f:\test加入到當(dāng)前的classpath中為make工具提供B.java的位置信息)
接下來(lái)就要運(yùn)行這個(gè)class文件了,運(yùn)行仍然在F:\test目錄下執(zhí)行(注意:如果不在此目錄下執(zhí)行運(yùn)行命令的話(huà),一定要把F:\test加入到當(dāng)前的classpath中),命令為:java edu.main.A,很顯然,這里就是根據(jù)輸入的package名稱(chēng)找到對(duì)應(yīng)的class文件,并檢驗(yàn)找到的class文件的與輸入的包名是否匹配(例如:如果你在edu目錄下新建一個(gè)test目錄,將A.class文件拷貝進(jìn)去,輸入java edu.test.A 的話(huà)還是會(huì)報(bào)錯(cuò):找不到class文件)。可能有人要問(wèn):為什么運(yùn)行的時(shí)候又可以根據(jù)包名找到相應(yīng)的class文件呢?因?yàn)檫\(yùn)行的時(shí)候默認(rèn)是從當(dāng)前路徑開(kāi)始搜索的,如果當(dāng)前路徑找不到的話(huà),就在系統(tǒng)的classpath中找,如果再找不到就會(huì)報(bào)錯(cuò)。
由上面的分析我們可以得出:
(1)在命令行模式下編譯java文件時(shí),如果cmd不在該java文件所在的目錄下,就要直接指定文件
的絕對(duì)路徑(javac F:\test\edu\main\A.java),如果在java文件所在的目錄下,可以不指定
路徑,但是要設(shè)置classpath讓編譯器的make工具找到其他import的類(lèi)
(2)運(yùn)行的時(shí)候要指出包路徑(java edu.main.A),并且一定要在class文件名前帶上完整的包名
(edu.main.A),而且該包所在的文件夾(即edu所在的文件夾)一定要在classpath中,這樣才
能找到對(duì)應(yīng)的class文件(在包所在的文件夾目錄下運(yùn)行cmd程序或者將該目錄加入到classpath
中均可)。
(3)在命令行模式下非直接編譯的java,編譯器使用make工具根據(jù)java文件中的import信息間接找
到引用的java文件,所以一定要注意文件的配置,以及相互之間的位置關(guān)系。當(dāng)然也可以通過(guò)
設(shè)置classpath提供給make工具,但是如果文件比較多而且相互之間的引用關(guān)系比較復(fù)雜的話(huà)會(huì)
比較麻煩。
(4)classpath只能供make工具以及運(yùn)行class文件時(shí)使用,在直接編譯的時(shí)候不使用classpath信
息,必須在要編譯的java文件前帶上其絕對(duì)的路徑名。

 


查看完整回答
反對(duì) 回復(fù) 2022-02-21
?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

一、先建立一個(gè)包,把兩個(gè)類(lèi)放到放進(jìn)里面,然后調(diào)用編譯。
二、如果兩個(gè)類(lèi)不在同一個(gè)包內(nèi),需要導(dǎo)入包名,用import 導(dǎo)入,
important 后面跟包的名稱(chēng),試試看。

查看完整回答
反對(duì) 回復(fù) 2022-02-21
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

NoClassDefFoundError異常 說(shuō)明你A類(lèi)里面不知道B類(lèi) 我看是你的B類(lèi)沒(méi)有public吧 一個(gè)類(lèi)要能夠被另外一個(gè)類(lèi)import必須的public 而不是default,你把B類(lèi)的寫(xiě)成如下在試試:
package ***;
public class B{
}

A類(lèi)使用:
package **;// a的包名
import ***.B; //導(dǎo)入B
public class A{//your fun}



查看完整回答
反對(duì) 回復(fù) 2022-02-21
  • 3 回答
  • 0 關(guān)注
  • 231 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)