1

多年来,我一直在使用 IDE (Eclipse) 为我编译我的 jar 文件,这些年来我已经了解了它们是如何工作的,但是我仍然不完全理解 jar 是如何知道主要方法在哪里的,我也是好奇手动编译它有多简单(或不简单)。

我有一个(某种)我正在开发的 IDE,它需要能够编译和运行一个 jar,其中包括来自用户的文件以及一个 jar 或一堆其他类(API),我有在这里看到一些提到 JavaJavaCompiler类但从未提供演示代码的问题,而且似乎几乎没有人知道如何手动编译,所以我想贡献一下。那么,如何使用 java 代码创建 jar 文件呢?请提供演示代码。

4

1 回答 1

4

我还是不完全明白jar是怎么知道main方法在哪里的

这就是清单文件的工作。

我也很好奇手动编译它有多简单(或不简单)。

这非常简单——在构建类文件后使用该jar工具。

让我们全面了解一下。

创建一个名为的目录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工具以及清单的潜在内容的更多详细信息,请参阅链接文档。

于 2013-07-18T22:23:00.683 回答