Java Can';“我不知道如何运行我的jar文件”;无法找到或加载主类“;
我试图创建一个jar文件,并使用Java Can';“我不知道如何运行我的jar文件”;无法找到或加载主类“;,java,Java,我试图创建一个jar文件,并使用java-cp main.jar com.test.Foo.main运行它,但我一直得到: Error: Could not find or load main class com.test.Foo.Main Caused by: java.lang.ClassNotFoundException: com.test.Foo.Main 这是我的文件结构。所以我认为我的Main.java中的行应该是package com.test.Foo正确吗 我正在用javac
java-cp main.jar com.test.Foo.main
运行它,但我一直得到:
Error: Could not find or load main class com.test.Foo.Main
Caused by: java.lang.ClassNotFoundException: com.test.Foo.Main
这是我的文件结构。所以我认为我的Main.java
中的行应该是package com.test.Foo
正确吗
我正在用javacmain.java
编译我的Main.java
,它输出一个Main.class
文件。之后,我使用jar cfm main.jar META-INF/MANIFEST.MF main.class
创建了一个jar文件,最后当我与jar文件/src/com/test/Foo/
位于同一目录时,我运行java-cp main.jar com.test.Foo.main
,这时我遇到了上述错误。你知道我如何像这样运行这个文件吗(是的,我需要它专门使用这个命令运行)
Main.java
package com.test.Foo;
public class Main {
public static void main (String args[]) {
System.out.println("I am com.test.Foo.Main");
}
}
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: com.test.Foo.Main
我尝试使用中给出的一些选项,但没有任何帮助。该类名为
com.test.Foo.Main
您需要在命令中指定全名:
java -cp main.jar com.test.Foo.Main
或者您可以使用更简单的
java -jar main.jar
检查META-INF/MANIFEST.MF中的
清单版本:1.0
该属性必须存在
编辑: 您需要移动到源根目录
src/
,并发出下面的命令来创建一个有效的jar
javac com/test/Foo/*.java
然后,使用
jar cmf com/test/Foo/MANIFEST.MF main.jar com/test/Foo/*.class
问题是,包结构显然应该与文件夹结构相匹配 你在问题中展示的图片是你的项目结构,而不是你的jar结构
创建jar文件时,该jar文件的结构可能是
与源代码文件夹结构不同
每个IDE(如eclipse、netbeans、IntelliJ)都有一个创建JAR文件的机制。在您的情况下,当您打开创建的jar文件(使用winrar之类的zip应用程序)时,您应该会看到如下内容:
com
|
test
|
Foo
|
Main
META-INF
|
MANIFEST.MF
这应该是文件和文件夹的顺序,否则Java无法从MANIFEST.MF
Manifest-Version: 1.0
Main-Class: com.test.Foo.Main
现在要解决这个问题:
“Main”对一个类来说可能是个坏名字。。。但听起来您的问题是忘记了“Foo”:CHANGE MANIFEST.MF:
Main类:com.test.Foo.Main
。我还建议:java-jarmain.jar
。很抱歉,我刚刚将其添加到错误中。即使我包含Foo
-java-cp main.jar com.test.Foo
我也会遇到同样的问题。我不确定什么是pom
文件,所以我要说不。这应该是我的下一步吗?如何创建jar文件?你的IDE是什么?@Mehdi,所以我使用jar cfm main.jar META-INF/MANIFEST.MF main.class
创建jar文件,对于这个测试项目,我只使用VSCode。通常,我会使用IntelliJ。因此运行java-jarmain.jar
会在main.jar中返回无主清单属性。如果我在对所有内容进行jaring时包含清单文件,那么会发生这种情况的原因是什么?也不起作用,我尝试将其添加到文件的顶部和底部,但仍然不起作用。@BrandonBenefield编辑了答案,以正确的方式生成jar。