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

时间:2011-11-28 21:53:29

标签: eclipse jar java-web-start

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

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

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

如果它是一个jar,是不是更容易,因为我不必编写它使用的所有库的所有不同路径?

如果库和应用程序都有变化,那么单个jar会是更好的解决方案吗?或者我需要为每个库提供<jar href=''>吗?

另请注意,我需要使用.dll和.so文件等本机库。

1 个答案:

答案 0 :(得分:132)

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

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

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

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

    但是,将所有内容打包到单个JAR(选项#1和#2)中的缺点是,如果更新应用程序,则用户必须下载更多数据才能更新应用程序。如果JAR保持独立,那么用户只需下载包含应用程序代码的JAR,而不是包含应用程序代码所有库代码的单个大型JAR。