[英]Can't find or load main class, in a .jar file
一直在尋找我的問題的解決方案大約2個小時,嘗試了無數種解決方案,但問題仍然沒有解決。
我有一個游戲項目,幾乎沒有軟件包。 幾何圖形,水平,裝飾和游戲。 游戲包中包含一個gameRun.java
package game;
public class gameRun {
/**
* Program entry point.
* @param args the arguments for the levels
*/
public static void main(String args[]) {
... some code
}
}
而且我有以下清單文件:
Main-Class: game.gameRun
Class-Path: someExternalGraphicTool.jar
//newline here
我使用以下命令編譯整個游戲:(bin文件夾已存在)。
javac -d bin src/geometry/*.java src/decoration/*.java src/levels/*.java src/game/*.java
然后,使用以下命令將編譯后的類轉換為可執行的.jar文件:
jar cvfm t.jar manifest.mf bin/geometry/*.class bin/decoration/*.class bin/levels/*.class bin/game/*.class
然后,我嘗試使用運行我的t.jar:
java -jar t.jar
//or
java -cp .:t.jar game.gameRun
兩者都會產生錯誤,“錯誤:找不到或加載主類game.gameRun”。但是,當我將jar文件解壓縮時,在bin / game目錄內,我可以看到一個gameRun.class文件,以及META-INF \\ MANIFEST.MF文件我仍然可以看到Main-Class設置為game.gameRun。
請注意,我正在命令行上的遠程Linux服務器上工作,即使我將jar文件下載到Windows 10計算機上,jar文件也無法正常工作。
在此過程中我做錯了什么? 謝謝你的幫助。
由於bin
文件夾,您的類在jar
文件中的結構錯誤。 我的建議:從bin
文件夾開始將所有內容打包到一個jar中。
現在,當您提取jar
您將看到2個文件夾:META-INF和bin。
如果從bin文件夾中創建jar,則會看到:META-INF和game,它將起作用。
它不能簡單地為您工作,因為它找不到主類,因為它位於bin / game / YourClass.class中,而不是game / YourClass.class中。
...\\bin> jar cvfm t.jar manifest.mf geometry/*.class decoration/*.class levels/*.class game/*.class
然后:
...\\bin> java -jar t.jar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.