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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用命令行創(chuàng)建一個 jar,其中一個類依賴于同一項目中的另一個類?

如何使用命令行創(chuàng)建一個 jar,其中一個類依賴于同一項目中的另一個類?

猛跑小豬 2021-10-28 14:26:54
我正在嘗試學(xué)習(xí) Java,更多的是作為一種愛好而不是其他任何東西,從我通常的 C# 中采取不同的角度,在那里你實際上在一個文件中擁有命名空間和多個類(不是咆哮或任何東西)。但是,我似乎不太明白 jar 創(chuàng)建過程是如何工作的,至少在“文件輸入”參數(shù)方面是這樣。我很清楚有像 and、maven 等構(gòu)建工具。我只是想更好地了解整個過程。我正在嘗試從我的 2 個類中創(chuàng)建一個 jar,它們位于 2 個單獨的包中。這是文件夾結(jié)構(gòu):tryproject\packageOne\MainApp.classtryproject\packageTwo\Greeter.class主應(yīng)用程序package packageOne;import packageTwo.Greeter;public class MainApp{ public static void main(String[] args){         Greeter greeter=new Greeter();     greeter.setMessage("Hello World");     greeter.sayHello(); }}問候語package packageTwo;public class Greeter{ private String whatTosay; public void setMessage(String whatTosay){    this.whatTosay=whatTosay; } public void sayHello(){    System.out.println(whatTosay); }}這是命令提示符輸出:C:\Users\SomeUser>jar cfve tryapp.jar MainApp C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.classadded manifestadding:Users/SomeUser/Desktop/LearningJava/tryproject/packageOne/MainApp.class(in = 414) (out= 299)(deflated 27%)adding:Users/SomeUser/Desktop/LearningJava/tryproject/packageTwo/Greeter.class(in = 506) (out= 333)(deflated 34%)C:\Users\SomeUser>java -jar tryapp.jarError: Could not find or load main class MainAppCaused by: java.lang.ClassNotFoundException: MainApp我真的不明白為什么它找不到我的MainApp班級,我也很好奇是否可以在沒有預(yù)制清單的情況下以這種方式構(gòu)建 jar。
查看完整描述

1 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗 獲得超18個贊

對于偶然發(fā)現(xiàn)這篇文章的人來說,混淆的原因以及這對我不起作用的原因是因為我沒有考慮到我是在其他地方而不是在根目錄中創(chuàng)建我的罐子這一事實驅(qū)動器,因此 jar 結(jié)構(gòu)將如下所示:


Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class

Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class

以上是我使用以下命令創(chuàng)建后的 jar 結(jié)構(gòu):


C:\Users\SomeUser>jar cfve tryapp.jar MainApp C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class

現(xiàn)在為了運行這個 jar,你必須改變上面的命令,而不是只有 MainApp,你必須像這樣放置整個項目結(jié)構(gòu):


C:\Users\SomeUser>jar cfve tryapp.jar Users.SomeUser.Desktop.LearningJava.tryproject.packageOne.MainApp  C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class

并且您還必須修改每個 .java 類文件的包以類似于我剛剛在命令中修改的結(jié)構(gòu)。因此,而不是僅僅的package packageOne;或package packageTwo;你需要重寫他們這樣package Users.SomeUser.Desktop.LearningJava.tryproject.packageOne;和package Users.SomeUser.Desktop.LearningJava.tryproject.packageTwo;。進(jìn)口也是如此?,F(xiàn)在,如果您修改了所有 .java 文件并重新編譯它們,您應(yīng)該能夠使用我之前提到的命令指令運行 jar。


但是更好的解決方案和更簡單的解決方案就像上面提到的@Prashant Gupta。


例如,只需使用:


jar cfve tryapp.jar packageOne.MainApp -C C:\Users\SomeUser\Desktop\LearningJava\tryproject\ .

但是它將獲取該目錄中的所有文件,因此可能只有一個單獨的目錄用于二進(jìn)制文件或應(yīng)用程序所需的所有文件,而另一個用于源文件。


查看完整回答
反對 回復(fù) 2021-10-28
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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