Java Can';在.jar文件中找不到或加载主类
我花了大约2个小时寻找解决我问题的方法,尝试了无数的方法,但问题仍然没有解决 我有一个游戏项目与几个包;几何、关卡、装饰和游戏。游戏包中有一个gameRun.javaJava Can';在.jar文件中找不到或加载主类,java,jar,manifest,Java,Jar,Manifest,我花了大约2个小时寻找解决我问题的方法,尝试了无数的方法,但问题仍然没有解决 我有一个游戏项目与几个包;几何、关卡、装饰和游戏。游戏包中有一个gameRun.java package game; public class gameRun { /** * Program entry point. * @param args the arguments for the levels */ public static void main(String args[]) { ... som
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文件夹已经存在)
然后,我使用以下命令将编译后的类转换为可执行的.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文件中我仍然可以看到主类被设置为game.gameRun
请注意,我正在远程linux服务器上使用命令行,即使我将jar文件下载到windows 10机器上,它也无法工作
在这个过程中我做错了什么?谢谢您的帮助。由于
bin
文件夹,您的类在jar
文件中的结构错误。我的建议是:从bin
文件夹开始,将其全部打包到一个罐子中
现在,当您提取jar
时,您将看到两个文件夹: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
如果您的类被称为gameRun
,那么您的清单应该是Main class:gameRun
,我认为。顺便说一下,Java命名约定是类名总是以大写字母开头。你应该遵循惯例。gameRun类在游戏包中,所以根据我所读的内容,我应该键入game.gameRun。我只是试着按照你的建议制作jar,但它只在gameRun而不是game.gameRun上产生了相同的错误。对不起……我假设你没有包。编辑代码以显示它现在在包中。清单是你正在创建的还是自动创建的?有可能包括整个舱单吗?
java -jar t.jar
//or
java -cp .:t.jar game.gameRun