是否可以使用另一个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
。
我被困在这里。
答案 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