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)用程序所需的所有文件,而另一個用于源文件。
添加回答
舉報