2

私の 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"); それも失敗したと追加しました。

4

2 に答える 2

0

サンドボックス (署名されていないアプリ) にとどまっている限り、ローカル ファイル システムにはアクセスできません。デバイス ドライバーのインストールに関しては、署名されたアプリでも実行できると思いますが、おそらく Windows の確認がトリガーされます。

http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/security.htmlを参照してください。

于 2013-03-07T11:09:28.687 に答える
0

効いたのはこれ

より単純なアプローチを使用する (NetBeans または Borland JBuilder を使用する場合に動作することが確認されています):

RXTXcomm.jar をライブラリとして追加

アプリケーションをコンパイル (ビルド)

rxtxSerial.dll を配布フォルダーのルートに追加します ( NetBeans を使用する場合はprojectname /dist ) 。

wiki http://rxtx.qbang.org/wiki/index.php/Deploying_JAVA_with_RXTXから

「nativelib」ディレクティブを jnlp に入れるという (Andrew からの) アドバイスは機能しませんでした。

于 2013-03-11T15:24:20.593 に答える