多年来我一直在使用IDE(Eclipse)来编译我的jar文件,这些年来我已经了解了它们是如何工作的但是我还是不完全理解jar如何知道main方法的位置,我也很好奇手动编译它是多么简单(或不是)
我有一个(我正在研究的)IDE需要能够编译和运行一个包含来自用户的文件和一个jar或一堆其他类(API)的jar,我有在这里看到一些问题提到Java JavaCompiler
类,但从未给出演示代码,似乎没有人知道如何手动编译,所以我想贡献。那么,如何使用java代码创建一个jar文件呢?请提供演示代码。
答案 0 :(得分:4)
我仍然不完全理解jar如何知道main方法的位置
这是manifest file的工作。
我也很好奇手动编译它是多么简单(或不)。
这非常简单 - 在构建类文件后使用jar
tool。
让我们全面了解一下。
创建名为src
的目录和名为bin
的目录。在src
下,在该目录中创建一个目录demo
和一个名为Test.java
的文件:
package demo;
public class Test {
public static void main(String[] args) {
System.out.println("Working!");
}
}
现在编译代码:
javac -d bin src/demo/Test.java
(这适用于Unix和Windows。)
然后创建一个名为manifest.txt
的清单文件 - 它真正发生在哪里并不重要,但我暂时将其保留在src
中:
Main-Class: demo.Test
现在构建一个jar文件:
jar cfm test.jar src\manifest.txt -C bin demo/Test.class
运行它:
java -jar test.jar
现在,您可以在命令行中指定入口点,而不是自己构建清单文件:
jar cfe test.jar demo.Test -C bin demo/Test.class
有关如何使用jar
工具以及清单的潜在内容的更多详细信息,请参阅链接的文档。