簡體   English   中英

.jar文件中找不到或加載主類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM