【发布时间】:2013-05-15 07:26:46
【问题描述】:
这就是我所拥有的。
我有我的“MyJava”文件夹,其中包含所有内容。
MyJava/src/a/HelloWorld.java MyJava/src/b/Inner.java 我的Java/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:
主类: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.
我知道这是一个非常简单的问题,我错过了什么?
【问题讨论】:
-
它不是包的一部分。
-
为什么这两个类在不同的目录下?
-
嗯...我正在研究如何编译某些东西。虽然类似的东西确实使用包。
-
本地文件系统上Java源代码中的包通常对应于源代码所在的目录。因此,如果一个类有包
pkg.name和名称MyClass,它应该在路径pkg/name/MyClass.java中。我建议如果您的类都在同一个包中(似乎是默认包),它们应该在同一个目录中。有很多不同的方法,但我建议你暂时坚持最简单的方法。
标签: java jar compilation noclassdeffounderror manifest.mf