如何使用许多jar文件?

时间:2018-10-14 17:42:44

标签: java jar classpath executable-jar

是否可以使用另一个jar而不是主要jar中的类?

我的工作目录:

.
|-- Main.java
|-- Makefile
|-- Manifest
`-- original
    `-- Test.java

Main.java

public class Main {
    public static void main (String[] args) {
       Test.test();
    }
}

Test.java

public class Test {
    public static void test() {
        System.out.println("This is a test");
    }
}

Manifest

Main-Class: Main

所以,我这样做:

javac -source 1.6 -target 1.6 -classpath original/:./ Main.java
javac -source 1.6 -target 1.6 -classpath original/:./ original/Test.java

它会生成Main.class and original/Test.class 我可以使用java -classpath original/:./ Main来运行它。那就是我想要的。

但是现在我需要jar文件。如何正确执行?

我尝试过:

jar cfm Main.jar Manifest Main.class
jar cfm original/Test.Jar Manifest original/Test.class

但是在这里,我不知道如何正确运行Main

如果我这样做:java -jar -classpath original/:./ Main

我得到了Error: unable to access jarfile Main

如果我这样做:java -jar original/Test.jar Main.jar

我得到了Error: could not find or load main class Main

我被困在这里。

3 个答案:

答案 0 :(得分:0)

好吧,刚注意到,您的Test.java文件在原始文件夹中,因此您需要声明包原始。在顶部,因此您的Test.java文件应类似于

package original;

public class Test {

    public static void main(String args[]) {
        System.out.println("Hello Test");
    }
}

然后您需要通过以下命令编译Main.java和original \ Test.java

javac Main.java original\Test.java

然后运行此命令来创建您的jar文件,

jar cf main.jar Main.class original\Test.class

这将创建main.jar文件,然后您可以运行以下命令来运行Main或Test程序,

java -cp main.jar Main

java -cp main.jar original.Test

让我知道您是否遇到任何问题。

答案 1 :(得分:0)

这应该是您开始使用Maven或Gradle构建应用程序的关键点。

这样,您可以在构建的.jar文件中包含外部库,而不必担心选择正确的.jar依赖项

答案 2 :(得分:0)

我接下来跑:

  • 编译类 javac -source 1.6 -target 1.6 -classpath original/:./ original/Test.java javac -source 1.6 -target 1.6 Main.java
  • 创建罐子 jar cfe app.jar Main Main.class original/Test.class
  • 运行罐子 java -jar app.jar 输出:This is a test