如何使用多个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。


我被困在这里。


智慧大石
浏览 154回答 3
3回答

慕丝7291255

这应该是一个点,您应该开始使用 Maven 或 Gradle 来构建您的应用程序。这样,您可以在构建的 .jar 文件中包含外部库,而且您几乎不需要担心选择正确的 .jar 依赖项

拉丁的传说

我接下来运行:编译类 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运行 jar java -jar app.jar输出:This is a test

MMMHUHU

好的,刚刚注意到,您的 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如果您遇到任何问题,请告诉我。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java