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



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

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

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

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

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

所需库时的主类条目:

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

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

Main-Class: YourMainClass

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

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

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

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

这主要是在eclipse中导出为可运行jar的两种方法。

1)。将所需的库打包到jar中

  • 这将把库的实际jar文件添加到jar中。这是最干净的,因为它将应用程序类文件与图书馆JAR
  • 缺点是这会使可运行的jar执行速度非常慢

2)。将所需库提取到生成的jar中

  • 这种方式将只从库中提取实际的类文件您的应用程序使用并包含在可运行的jar文件中。因此,您的Jar文件将包括您的应用程序类文件以及应用程序使用的所有库的类文件。

  • 此方法使可运行jar的性能与在eclipse侧。

最新更新