我一直在学习 JAR 文件,并想尝试自己创建并运行一个。我执行了以下步骤:
- 创建了一个包含“source”子文件夹和“classes”子文件夹的项目文件夹
- 我编写了 2 个源文件,其中一个包含一个 main 方法,该方法创建另一个类的实例并在其中运行一个简单的方法。
- 将它们编译到“classes”子文件夹中。我检查了一下他们是否会逃跑。他们做到了
- 我创建了一个manifest.txt 文件并填写了Main-Class: xxxx 并按回车键。我将其保存在sources子文件夹中
通过编写在classes子文件夹中创建一个jar文件
jar -cvmf manifest.txt zzz.jar *.class
尝试通过键入来执行 jar 文件
java -jar zzz.jar
这会产生 ClassNotFound 异常。如果我尝试通过在 Windows 中双击该 jar 来执行它,我会收到一个错误框,显示“无法找到主类 xxxx”
我已经仔细检查了 list 文件中类的拼写,它是正确的。
可能很重要:我必须使用 java -cp 编译我的程序。 xyz 因为我的类路径有问题。这是否意味着我也需要以不同的方式执行 jar?我试过 java -cp 。 -jar zzz.jar 但最终还是出现了同样的异常。
编辑:我最终从头开始,现在它运行了(使用基本的 -jar zzz.jar 命令)。令人沮丧的是我不知道自己做错了什么,但很高兴它正在发挥作用!
最佳答案
编号 5. 不应该在所有类文件所在的classes 子文件夹中运行吗?如果您的类位于包中(它们应该位于包中),您可能会想要使用 * 而不是 *.class..?
要检查您的 jar 文件包含什么内容,您可以运行:
jar tf zzz.jar
关于java - 执行 JAR 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997451/