将库提取和打包到 jar 文件中的区别

2022-08-31 13:04:27

我想知道从eclipse中提取和打包库到jar文件中与可运行的jar文件创建之间的区别。

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


答案 1

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

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

主类条目在这些 jar 文件的文件之间是不同的:MANIFEST.MF

打包所需库时的主类条目:

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

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

Main-Class: YourMainClass

答案 2

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

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

因此,如果使用第三方JAR库,则始终打包是专业的。


推荐