1

这就是我所拥有的。

我有我的“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(); 
    }
}

内部.java:

public class Inner {

    public void myInner() {
        System.out.println("Inner Method");
    }
}

清单.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.

我知道这是一个非常简单的问题,我错过了什么?

4

2 回答 2

2

如果您检查 .JAR 中的文件,您会注意到已编译的类在bin目录中(因此无法找到,因为您的清单引用了顶层的类)。
像这样更改您的jar... 命令:

jar cvfm myTwo.jar manifest.txt -C bin .

另请参阅 Java 教程的“创建 JAR 文件”部分

于 2013-05-15T08:16:46.310 回答
0

解决方案之一是将以下行添加到 manifest.txt

Class-Path: bin/

然后你可以使用“你的”命令来创建 jar:

jar cvfm myTwo.jar manifest.txt bin/*.class
于 2013-05-15T09:53:03.700 回答