无法在 .jar 文件中找到或加载 main class
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
两者都会产生错误,"Error: Could not find or load main class game.gameRun"
但是,当我解压缩 jar 文件时,在 bin/game 目录中我可以看到一个 gameRun.class 文件,在 META-INF\MANIFEST.MF 文件中我仍然可以看到 Main-Class 设置为 game.gameRun.
请注意,我在远程 linux 服务器上工作,在命令行上,即使我将 jar 文件下载到我的 windows 10 机器上,jar 文件也不起作用。
在这个过程中我做错了什么?感谢您的帮助。
由于 bin
文件夹,您的 classes 在 jar
文件中的结构错误。我的建议:将其全部打包到一个 jar 中,从 bin
文件夹开始。
现在,当您提取 jar
时,您将看到 2 个文件夹:META-INF 和 bin。
如果您从 bin 文件夹中制作 jar,您将看到:META-INF 和游戏,它会工作。
它根本不适合你,因为它找不到主要的 class,因为它在 bin/game/YourClass.class 中,而不是 [=31] =].class.
...\bin> jar cvfm t.jar manifest.mf geometry/*.class decoration/*.class levels/*.class game/*.class
然后就是:
...\bin> java -jar t.jar
找了大约 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
两者都会产生错误,"Error: Could not find or load main class game.gameRun" 但是,当我解压缩 jar 文件时,在 bin/game 目录中我可以看到一个 gameRun.class 文件,在 META-INF\MANIFEST.MF 文件中我仍然可以看到 Main-Class 设置为 game.gameRun.
请注意,我在远程 linux 服务器上工作,在命令行上,即使我将 jar 文件下载到我的 windows 10 机器上,jar 文件也不起作用。
在这个过程中我做错了什么?感谢您的帮助。
由于 bin
文件夹,您的 classes 在 jar
文件中的结构错误。我的建议:将其全部打包到一个 jar 中,从 bin
文件夹开始。
现在,当您提取 jar
时,您将看到 2 个文件夹:META-INF 和 bin。
如果您从 bin 文件夹中制作 jar,您将看到:META-INF 和游戏,它会工作。
它根本不适合你,因为它找不到主要的 class,因为它在 bin/game/YourClass.class 中,而不是 [=31] =].class.
...\bin> jar cvfm t.jar manifest.mf geometry/*.class decoration/*.class levels/*.class game/*.class
然后就是:
...\bin> java -jar t.jar