Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在.jar文件中找不到或加载主类_Java_Jar_Manifest - Fatal编程技术网

Java Can';在.jar文件中找不到或加载主类

Java 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

我花了大约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文件夹已经存在)

然后,我使用以下命令将编译后的类转换为可执行的.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