1

Java webstart を使用して印刷アプリケーションを開発しようとしています。Eclipse を使用して通常の jar ファイルとして jar を作成しました。私たちのアプリケーションには、データベースに接続したり、データをバイトに変換したりするための外部ライブラリが必要です。

以前は、必要な jar を jre フォルダーの /ext/ ディレクトリに配置することで、これを行うことができました。ただし、これにより tomcat サーバーとライブラリの競合が発生するため、このアプローチは避けたいと考えています。

また、必要なライブラリも jar に既にパッケージ化されているため、プロジェクトを実行可能な jar としてエクスポートしようとしました。しかし、アプリケーションを実行しようとすると、jar 内のライブラリが表示されないようです。

また、必要なライブラリを jar と一緒にフォルダーに配置し、jnlp ファイルでそれらを 1 つずつ参照できることもわかっています。ただし、多くの外部jarがあり、それらを1つずつインポートしたくないため、このアプローチは避けたいと思います:)

私の質問は、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>
4

1 に答える 1

2

Web スタート アプリをパッケージ化する適切な方法は、使用しているライブラリ jar ファイルを<resources>タグでリストすることです。私のプロジェクトでは 12 個のライブラリ ファイルを使用していますが、起動時間はまだかなり良好です。プログラムが 2 回目に起動したときに、クライアント PC が行う必要があるのは、jar ファイルが変更されていないことを確認することだけです。これにより、将来の立ち上げが非常に迅速になります。

ライブラリにさまざまな jar ファイルが多数ある場合、サーバー上のこれらのファイルの最終更新日をローカルに保存されているバージョンと比較すると、時間がかかるのではないかと心配するかもしれません。この更新チェックをより効率的にするために、リソース ファイルでバージョン番号を指定して、不要な更新チェックを避けることができます。

JNLP に署名付きコードを含める必要がある場合、これらの jar ファイルをすべて一度に 1 つずつ署名しなければならないのは面倒に感じるかもしれません。このプロセスを簡素化するために、lib フォルダー内のすべての jar に署名する次の 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>
于 2013-03-19T19:26:14.790 に答える