簡體   English   中英

如何在Java Webstart項目中包含jar依賴項

[英]How to include jar dependencies in java webstart project

我們正在嘗試使用java webstart開發打印應用程序。 我們使用eclipse將jar創建為普通的jar文件。 我們的應用程序需要外部庫來連接數據庫,將數據轉換為字節等。

通過將必要的jar放在jre文件夾的/ ext /目錄中,我們能夠做到這一點。 但是,這導致了與我們的tomcat服務器的庫沖突,因此我們希望避免這種方法。

我們還嘗試將項目導出為可運行的jar,因為所需的庫也已經打包在jar中。 但是,當嘗試運行該應用程序時,似乎無法看到jar中的庫。

我們也知道我們可以將所需的庫放在jar旁邊的文件夾中,並在jnlp文件中逐一引用它們。 但是,我們希望避免這種方法,因為我們有很多外部jar,並且我們不想一個接一個地導入它們:)

所以我的問題是我們如何正確打包java webstart jar? 還有另一種方法嗎? 最好的方法是什么?

請參閱下面的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>

打包Web啟動應用程序的正確方法是在執行操作時在<resources>標記中列出正在使用的庫jar文件。 我的項目使用12個庫文件,並且啟動時間仍然相當不錯。 當程序第二次啟動時,客戶端PC所需要做的就是檢查jar文件是否未更改。 這使得以后的發射非常快。

如果庫中有許多不同的jar文件,則可能會擔心將這些文件在服務器上的最后修改日期與本地存儲的版本進行比較會浪費一些時間。 為了使此更新檢查更有效率,您可以在資源文件中分隔版本號,從而避免不必要的更新檢查

如果JNLP需要包含簽名的代碼,那么必須一次唱所有這些jar文件可能會很痛苦。 為了簡化此過程,請考慮以下ant腳本,該腳本對lib文件夾中的所有jar進行簽名。

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM