我使用eclipse indigo创建了一个可运行的jar,我遇到了两种选择:
Extract required libraries into generated jar
和
Package required libraries into generated jar
虽然使用第一个选项创建只生成了一个包含应用程序包和META-INF包的jar文件,但第二个选项还创建了一个org包。
它的子文件夹org> eclipse> jdt> internal> jarinjarloader进一步扩展了这个org包。jarinjarloader包包含一些我以前没有见过的类。
这是我在第二个选项中的清单文件:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: main.SimpleCalculator
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoadermain是我的应用程序包,SimpleCalculator是我的主类。
我的问题是:
1)这两个选项有何不同,第二个选项添加的新类是什么?另外,在第二个选项的清单中有哪些不同的名称-值对?
2)此外,除了它们的清单文件允许可运行的jar成为可执行文件之外,不可运行的jar和可运行的jar之间是否有任何区别。(在创建一个不可运行的jar文件时,我找到了在我的项目中指定main-class的选项,所以我是不是遗漏了什么,或者只是eclipse试图提供额外的帮助?)
注意:我对这两个选项有一些猜测,但它们只是...猜猜看!
提前感谢!
发布于 2013-01-16 19:20:34
1)这两个选项有什么区别?
What is the difference between runnable jar library handling options?
2)第二个选项添加的这些新类是什么?
org包是为jar-in-jar-loader提供的。有了package option,它就会变成胖乎乎的jar,你的主类就不再是真正的main了,请看这种情况下的manifest。
来自Ant,但您的想法是正确的吗?
<attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
<attribute name="Rsrc-Main-Class" value="YourRealMainClass"/>3)另外,除了清单文件之外,不可运行的jar和可运行的jar之间有什么区别吗?
我不这么认为,但是从Eclipse导出不可运行的jar,您可以指定要包含的文件,而不是更灵活。
发布于 2013-01-16 19:25:45
第一个问题的答案是,第一个选项提取依赖类文件和资源,然后将它们打包到您的jar文件中,您需要注意使用此选项的许可证问题
至于第二种选择,它只打包:按原样将jar文件添加到您的jar文件中,并通过清单引用它们。
还有一个用于创建可运行jar文件的选项,它将所有依赖项jar文件放在与项目的可运行jar相邻的文件夹中,并在清单中的该文件夹中包含对该jar的引用。
第二个问题的答案是,是的,eclipse试图通过使用您的Runtime配置来简化工作,以便您可以基于您选择的任何配置创建一个可运行的jar。您可以通过手动创建清单来创建一个可运行的jar,其中包括主类。
https://stackoverflow.com/questions/14356958
复制相似问题