【发布时间】:2018-11-01 04:09:28
【问题描述】:
一直在寻找大约 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 机器上,它也不起作用。
在这个过程中我做错了什么?感谢您的帮助。
【问题讨论】:
-
如果你的班级被称为
gameRun,那么你的清单应该是Main-Class: gameRun,我想。顺便说一句,Java 命名约定是类名总是以大写字母开头。你应该遵守约定。 -
gameRun 类在游戏包中,所以根据我的阅读,我应该输入 game.gameRun。我刚刚尝试按照您的建议制作 jar,但它产生了与 gameRun 而不是 game.gameRun 相同的错误。
-
对不起...我以为你没有包裹。
-
编辑了代码以显示它现在在一个包中。
-
清单是您正在创建的东西还是自动创建的?是否可以包含整个清单?