eclipse indigo中的runnable jar创建选项

时间:2013-01-16 11:08:49

标签: java eclipse jar executable-jar eclipse-indigo

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

Extract required libraries into generated jar

Package required libraries into generated jar

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

这个org包的子文件夹进一步扩展为org> eclipse> jdt> internal> jarinjarloaderjarinjarloader包中包含了一些我以前从未见过的类。

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

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之间是否有任何区别,除了它们的清单文件允许runnable变为可执行文件。 (我发现在创建一个不可运行的jar文件的同时在我的项目中指定main-class的选项,所以我在这里遗漏了一些东西,或者只是eclipse尝试额外帮助?)

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

提前Thanx!

2 个答案:

答案 0 :(得分:2)

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

What is the difference between runnable jar library handling options?

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和可运行的jar之间有什么区别吗?

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

答案 1 :(得分:2)

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

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

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

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