How to include jar dependencies in java webstart p

2019-08-17 13:00发布

我们正在努力开发使用Java Webstart的打印应用。 我们使用eclipse创建的JAR作为一个正常的jar文件。 我们的应用程序需要外部库用于连接到数据库,该数据转换成字节等

我们可以通过建立必要的罐子在J​​RE文件夹/ EXT /目录之前做到这一点。 但是这引起了我们的Tomcat服务器,所以我们想避免这种方法库冲突。

我们还试图出口项目作为一个可运行的水瓶中需要的库都在罐子里已经打包也。 但是,试图运行应用程序时,它似乎是无法看到罐子里的库。

我们也知道,我们可以把需要的库旁边的jar文件夹中,并通过一个在JNLP文件中引用它们一个。 但是我们想避免使用此方法,因为我们有大量的外部罐的,我们不希望一个地导入一个:)

所以我的问题是我们如何正确地包装了Java Webstart的罐子? 有另一种方式? 什么是最好的方法呢?

请参阅下面我们的JNLP文件:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://192.168.1.169/webstart/" href="launch.jnlp" spec="1.0+">
    <information>
        <title>PrinterWebStart</title>
        <vendor>robert</vendor>
        <homepage href=""/>
        <description>PrinterWebStart</description>
        <description kind="short">PrinterWebStart</description>
    </information>
    <update check="always"/>
    <security>
<all-permissions/>
</security>
    <resources>
        <j2se version="1.5+"/>
        <jar href="printer-base.jar" main="true"/>
    </resources>
    <application-desc main-class="com.ccti.printer.task.PrinterTaskPanel">
    </application-desc>
</jnlp>

Answer 1:

包装一个web应用程序启动正确的方法是列出你正在使用的库jar文件<resources>为你正在做的标记。 我的项目使用12个库文件和推出的时间还是相当不错的。 当程序启动第二次,所有的客户端PC需要做的是检查jar文件并没有改变。 这使得今后的发射非常快。

如果您在库中有许多不同的jar文件,你可能会担心,比较这些文件的最后修改日期的服务器本地存储的版本上可能会浪费一些时间。 为了使这个更新检查更有效,你可以sepecify版本号在您的资源文件,从而避免不必要的更新检查 。

如果JNLP需要包含签名的代码,那么它可能会感觉像一个痛苦唱所有的jar文件之一的时间。 为了简化这个过程,考虑签署所有的罐子在lib文件夹下面的ant脚本。

<target name="signLibs">
   <signjar destDir="signed"  alias="aliasName" keystore="yourKeyStoreName"
      storepass="PaSSW0rD" force="true" >
   <path>
      <fileset dir="lib" includes="*.jar" />
   </path>
   </signjar>   
   <echo message="Library files were signed."/>
</target>


文章来源: How to include jar dependencies in java webstart project