提取和打包库到jar文件之间的区别

时间:2012-03-08 12:09:19

标签: java jar executable

我想知道使用runnable jar文件创建从eclipse中提取和打包库到jar文件之间的区别。

如果我的程序(runnable jar)使用其他需要这些外部库(jar)的类,我应该选择什么?

3 个答案:

答案 0 :(得分:45)

如果要将jar放入生成的jar文件中,可以使用打包方法。 例如,如果您使用的是Apache库或其他第三方jar,您可能希望将这些jar保留在生成的jar中。在这种情况下,使用包装。 “将所需的库打包到jar文件中”选项将org.eclipse.jdt.internal.jarinjarloader包的类放入生成的文件中,此包位于生成的jar文件的根目录下。由于Eclipse的jar加载器类,此选项还会根据大小创建更大的jar文件。

提取所需的库将导致按照包命名约定将第3方库的类放入jar文件中,例如:如果你打开你的jar内容,你可以看到org.apache..包下的一些类。

这些jar文件的MANIFEST.MF个文件的主类条目不同:

打包所需库时的主要课程条目:

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

提取必需的库时的主类条目:

Main-Class: YourMainClass

答案 1 :(得分:1)

对于我来说,主要区别在于打包的 JAR文件作为一个单独的项目完整地包含在内,因此保留了它们的版权信息和签名数据。

如果选择 extract ,则将类文件从其原始上下文中拉出并像原始文件一样存储,因此可能会违反某些许可条件,尽管最终JAR的大小为在这种情况下较小。 Eclipse也会在这种情况下警告您有关许可的问题。

因此,如果使用第三方JAR库,总是打包是很专业的。

答案 2 :(得分:-1)

尝试两种方法,然后使用Zip程序打开生成的jar文件。很有启发性。