gpt4 book ai didi

java - 无法在 .jar 文件中找到或加载主类

转载 作者:行者123 更新时间:2023-12-02 11:13:09 26 4
gpt4 key购买 nike

我花了大约 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
}
}

我有以下 list 文件:

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 计算机,该文件也无法工作。

在这个过程中我做错了什么?感谢您的帮助。

最佳答案

由于 bin 文件夹的原因,您的类在 jar 文件中的结构错误。我的建议:将其全部打包到一个 jar 中,从 bin 文件夹开始。

现在,当您提取 jar 时,您将看到 2 个文件夹:META-INF 和 bin。

如果你从 bin 文件夹中制作 jar,你将看到:META-INF 和游戏,并且它可以工作。

它对你不起作用,因为它找不到主类,因为它位于 bin/game/YourClass.class 中,而不是在 game/YourClass.class 中。

...\bin> jar cvfm t.jar manifest.mf 几何/*.class 装饰/*.class 级别/*.class 游戏/*.class

然后就是:

...\bin> java -jar t.jar

关于java - 无法在 .jar 文件中找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com