这就是我所拥有的。
我的'MyJava'文件夹中包含了所有内容。
MyJava/src/a/HelloWorld.java MyJava/src/b/Inner.java MyJava/bin/ MyJava/manifest.txt
HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
Inner myInner = new Inner();
myInner.myInner();
}
}
Inner.java:
public class Inner {
public void myInner() {
System.out.println("Inner Method");
}
}
Manifest.txt:
Main-Class: HelloWorld
首先我将.javas编译为.class:
javac -d bin src/a/HelloWorld.java src/b/Inner.java
现在我将它们放入.jar文件中
jar cvfm myTwo.jar manifest.txt bin/*.class
现在我尝试运行jar:
java -jar myTwo.jar
我得到了:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
...
Could not find the main class: HelloWorld. Program will exit.
我知道这是一个非常简单的问题,我错过了什么?
答案 0 :(得分:2)
如果检查.JAR中的文件,您会注意到编译的类在bin
目录中(因此无法找到,因为您的清单引用了顶级的类)。
像这样更改jar...
命令:
jar cvfm myTwo.jar manifest.txt -C bin .
另请参阅Java教程的 "Creating a JAR File" section 。
答案 1 :(得分:0)
其中一个解决方案是将以下行添加到manifest.txt
Class-Path: bin/
然后你可以使用'your'命令创建jar:
jar cvfm myTwo.jar manifest.txt bin/*.class