runnable jar库处理选项有什么区别?

所以我将使用Java Web Start来部署Java应用程序。 导出到Runnable Jar时,eclipse Helios有三个选项。

  • 将所需的库提取到JAR中
  • 将所需的库打包到JAR中
  • 将所需的库复制到JAR旁边的子文件夹中。

有什么区别,它们将如何影响我的.jnlp文件?

如果它是一个单独的jar文件,那不是更容易,因为我不必为所有使用的库编写所有不同的path。

如果库和应用程序都有变化,那么一个jar就是一个更好的解决scheme? 或者我需要为每个单独的库<jar href=''>

另外请注意,我需要使用像.dll和.so文件这样的本地库。

  1. 将所需的库解压缩到JAR中 – 从应用程序使用的库中提取实际的.class文件,并将这些.class文件放入可运行JAR中。 因此,可运行JAR不仅包含应用程序的.class文件,还包含应用程序使用的所有库的.class文件。

  2. 所需的库打包到JAR中 – 将的实际JAR文件放入可运行JAR中。 通常,JAR文件中的JAR文件不能由JVM加载。 但是Eclipse为可运行的JAR添加了特殊的类来使其成为可能。

  3. 将所需的库复制到JAR旁边的子文件夹中 – 保持库JAR与可运行JAR完全分离,因此可运行JAR将只包含应用程序的.class文件。

选项#2是很方便的,因为它把所有东西整齐地打包到一个JAR中,并且使库JAR与应用程序的.class文件分开。

然而,在单个JAR(选项#1和#2)中打包所有东西的缺点是,如果更新应用程序,那么用户将不得不下载更多的数据来更新应用程序。 如果JAR保持独立,那么用户只需下载包含应用程序代码的JAR,而不是包含您的应用程序代码所有库代码的单个大型JAR。