一直在寻找解决我问题的大约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.jarjava -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服务器,即使我将它下载到我的Windows 10计算机上,jar文件也不起作用。
在这个过程中我做错了什么?谢谢你的帮助。
答案 0 :(得分:1)
由于jar
文件夹,您的类在bin
文件中的结构错误。我的建议:将它全部打包到一个从bin
文件夹开始的jar中。
现在,当您解压缩jar
时,您将看到2个文件夹:META-INF和bin。
如果你从bin文件夹制作jar,你会看到:META-INF和游戏,它会起作用。
它并不适合你,因为它无法找到主类,因为它在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