1

我正在使用 eclipse indigo 创建一个可运行的 jar,我遇到了两个选项:

Extract required libraries into generated jar

Package required libraries into generated jar

虽然使用第一个选项创建只生成了一个包含应用程序包和META-INF包的 jar 文件,但第二个选项也创建了一个org包。

org软件包通过其子文件夹进一步扩展为org> eclipse> jdt> internal> jarinjarloader. 该jarinjarloader软件包包含一些我以前从未见过的类。

这是我在第二个选项中的清单文件:

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: main.SimpleCalculator
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

main是我的应用程序包,SimpleCalculator是我的主要课程。

我的问题是:

1)这两个选项有何不同,第二个选项添加了哪些新类?第二个选项的清单中还有哪些不同的名称-值对?

2)此外,除了它们的清单文件允许可运行的可执行文件之外,不可运行和可运行的 jar 之间是否有任何区别。(我找到了在我的项目中指定主类的选项,同时创建了一个不可运行的 jar 文件,所以我在这里遗漏了一些东西还是只是 eclipse 试图提供额外的帮助?)

注意:我对这两个选项有一些猜测,但它们只是……猜测!

提前谢谢!

4

2 回答 2

2

1)这两个选项有何不同?

可运行的 jar 库处理选项有什么区别?

2)第二个选项添加的这些新类是什么?

org包用于 jar-in-jar-loader。有了package option它会变成胖罐子,你的主类将不再是真正的主类,在这种情况下见清单。

来自 Ant,但你明白吗?

 <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
 <attribute name="Rsrc-Main-Class" value="YourRealMainClass"/>

3)此外,除了清单文件之外,不可运行和可运行的 jar 之间有什么区别吗?

我不这么认为,但是从 Eclipse 中导出不可运行的 jar 您可以指定要包含的文件,而不是更灵活。

于 2013-01-16T11:20:34.230 回答
2

第一个问题的答案是第一个选项提取依赖类文件和资源,然后将它们打包到您的jar文件中,您需要注意使用此选项的许可证问题

至于第二个选项,它只打包 ie:将 jar 文件按原样添加到您的 jar 文件中,并通过 MANIFEST 引用它们。

还有另一种创建可运行 jar 文件的选项,它将所有依赖项 jar 文件放在与项目的可运行 jar 相邻的文件夹中,并在 MANIFEST 中包含对该文件夹中 jar 的引用。

你的第二个问题的答案是,是的,eclipse 试图通过使用你的运行时配置来让生活变得更轻松,这样你就可以根据你选择的任何配置创建一个可运行的 jar。您可以通过手动创建包含主类的清单来创建可运行的 jar。

于 2013-01-16T11:25:44.670 回答