私の Java FX2 アプリケーションはシリアル デバイスを構成し、展開の一部として、Windows デバイス ドライバーをインストールし、ネイティブ ライブラリ (RxTx シリアル ポート ライブラリ) を Java ディレクトリにコピーする必要があります。
Java Web Start で処理できますか? または、ユーザーが段階的に行う必要があります。ドライバーを手動でインストールし、ライブラリをコピーしてから、Web Start を介してアプリケーションをインストールします。
更新: 以下の MyApp.jar は自己署名されています。プロジェクト名の下にdllを置きます。jnlp の dll にこの行を追加しました。私は Netbeans 7.3 を使用しているので、VM args 行を入れます。私のjnlpは次のようになります:
<resources>
<j2se version="1.6+" java-vm-args="-Djava.library.path=. " href="http://java.sun.com/products/autodl/j2se"/>
<jar href="MyApp.jar" size="216992" download="eager" />
<jar href="lib/RXTXcomm.jar" size="66493" download="eager" />
<nativelib href="rxtxSerial.dll" size="122880" download="eager" />
</resources>
<security>
<all-permissions/>
</security>
Netbeans IDE でアプリを実行できます。ただし、jnlp をクリックすると、「ランタイム エラー」というポップアップが表示されます。詳細をクリックするように求められますが、何も表示されません。Java コントロール パネルの一時インターネット ファイルにある以前の jnlps を削除しました。Java コンソールには何も表示されません。
@AndrewThompson Janelaを試してjnlpをチェックしました。便利な道具!dll が dist フォルダーに入っていないことがわかります。jnlp は NB 7.3 によって生成されます。それをnativelibの行に入れる方法はありますか? 毎回手動で行う必要があります。`
JaNeLA レポート - バージョン 11.05.17
ファイルのレポート:/D:/Profiles/Anil/My%20Documents/NetBeansProjects/MyApp/dist/MyApp.jnlp
コンテンツ タイプ application/xml は、予期される application/x-java-jnlp-file cvc-complex-type.2.4.a のタイプと等しくありません: 要素 'jfx:javafx-runtime' で始まる無効なコンテンツが見つかりました。「{java、j2se、jar、nativelib、拡張機能、プロパティ、パッケージ}」のいずれかが必要です。cvc-complex-type.2.4.a: 要素「jfx:javafx-runtime」で始まる無効なコンテンツが見つかりました。「{java、j2se、jar、nativelib、拡張機能、プロパティ、パッケージ}」のいずれかが必要です。cvc-complex-type.2.4.a: 要素「security」で始まる無効なコンテンツが見つかりました。「{resources、application-desc、applet-desc、component-desc、installer-desc}」のいずれかが必要です。cvc-complex-type.2.4.a: 要素「security」で始まる無効なコンテンツが見つかりました。{resources、application-desc、applet-desc、component-desc、installer-desc}' が期待されます。XML エンコーディングは不明ですが、utf-8 コードベースとして宣言されていません。file:/D:/Profiles/Anil/My%20Documents/NetBeansProjects/MyApp/dist/ へのデフォルト設定 MyApp.jar でのリソースのダウンロードは、download='eager' の (デフォルト) 値を削除することで最適化できます。MyApp.jar でのリソースのダウンロードは、main='false' の (デフォルト) 値を削除することで最適化できます。アプリの起動を最適化できる場合があります。MyApp.jar リソースに download='lazy' を指定します。ダウンロードの「部分」が指定されていない場合、遅延ダウンロードは MyApp.jar に対して期待どおりに機能しない可能性があります。リソース「lib/RXTXcomm.jar」はサイズ「66490」として宣言されていますが、実際には「66512」です。lib/RXTXcomm でリソースをダウンロードします。jar は、download='eager' の (デフォルト) 値を削除することで最適化できます。lib/RXTXcomm.jar でのリソースのダウンロードは、main='false' の (デフォルト) 値を削除することで最適化できます。アプリの起動を最適化できる場合があります。lib/RXTXcomm.jar リソースに download='lazy' を指定します。ダウンロードの「部分」が指定されていない限り、遅延ダウンロードは lib/RXTXcomm.jar に対して期待どおりに機能しない可能性があります。リソース rxtxSerial.dll のフェッチ中に問題が発生しました。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll (指定されたファイルが見つかりません) ` lib/RXTXcomm.jar リソースに download='lazy' を指定します。ダウンロードの「部分」が指定されていない限り、遅延ダウンロードは lib/RXTXcomm.jar に対して期待どおりに機能しない可能性があります。リソース rxtxSerial.dll のフェッチ中に問題が発生しました。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll (指定されたファイルが見つかりません) ` lib/RXTXcomm.jar リソースに download='lazy' を指定します。ダウンロードの「部分」が指定されていない限り、遅延ダウンロードは lib/RXTXcomm.jar に対して期待どおりに機能しない可能性があります。リソース rxtxSerial.dll のフェッチ中に問題が発生しました。D:\Profiles\Anil\My Documents\NetBeansProjects\MyApp\dist\rxtxSerial.dll (指定されたファイルが見つかりません) `
dll を jar に入れ、
System.loadLibrary("./rxtxSerial");
それも失敗したと追加しました。