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

KJW*_*KJW 76 eclipse jar java-web-start

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

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

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

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

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

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

Mic*_*ael 136

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

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

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

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

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

  • @KimJongWoo你可以像"java -jar myjar.jar"那样"执行"可运行的JAR,因为JAR在其"META-INF/MANIFEST.MF"文件中定义了`main()`方法的位置.此文件中的"Main-Class"设置定义了具有`main()`方法的类."普通"JAR往往没有这个设置,所以你不能以同样的方式"执行"它们. (9认同)