10

できる限り試してみてください。JNLPファイルをローカルで実行することはできません(ダブルクリックで)。jnlpファイルを基準にして指定した場合でも、jarファイルの検索に問題があるようです。次のエラーが発生します。

フィールド<jar>hrefの値が無効です:helloworld.jar

これは、JNLPファイルがhelloworld.jarと同じフォルダーにある場合でも発生します。私は検索を行いましたが、これは特にアプリケーションをCDにパッケージ化して、JNLPを使用したい人にとっては一貫した問題です。Sunが提供する唯一の「ソリューション」は、コマンドラインを介してコードベースを指定する機能ですが、それはあまり役に立ちません。彼らがコードベースを「」と見なさない、または許可しない理由がわかりません。または「file://」-jnlpタグ(ファイル内)のコードベースパラメーターでこれらの種類のことを試しましたが、何も機能しませんでした。


プラットフォームの検出、ネイティブライブラリ、さらにはメインのJOGL jarファイルについても心配する必要がないため、JNLPファイルを使用すると非常に便利です。この行を含めるだけで、すべてが私のために行われます。

<extension name="JOGL" href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />

同じようなことができるものを見つけたいと思っています。そうでない場合は、手動で(またはAntを使用して)JOGLjarファイルを取得できます。大したことではありません。JNLPが私のために行っていることの1つに過ぎず、私は本当に見逃してしまいます。


ローカルで使用する(つまり、ダブルクリックして実行する)ためのJNLPファイルの最良の代替手段は何ですか?とてもエレガントなものはありますか、それともLinux用のシェルスクリプト、Windows用のバッチファイルを作成し、Antに適切なJOGL jarを検出してダウンロードさせる必要がありますか?

4

5 に答える 5

22

このような.jnlpファイルを使用して、JavaWebStartソフトウェアをローカルで起動しました

  1. 次のようにコードベースを指定します。 <jnlp spec="1.0+" codebase="file://localhost/X:/path/to/jnlp/" href="software.jnlp">

  2. 相対パスを使用してリソースを一覧表示します。<resources> <jar href="lib/software.jar" main="true" /> <jar href="lib/softwareLibrary.jar" main="true" /> ... </resources>

  3. 最後に、次のマークが付いたjar内のソフトウェアエントリポイントを見つけることができる場所をWebStartに通知しますmain="true"<application-desc main-class="com.example.Main" />

リモートでデプロイするときに変更する必要があるのは、コードベースパラメーターだけです。

于 2010-03-10T13:00:53.263 に答える
4

属性codebaseとタグhrefから削除するだけです。jnlp

<jnlp spec="1.0+">

これは、java1.6u18以降でサポートされています。

于 2012-06-21T06:01:48.100 に答える
2

JNLPシステムはJava6update 10で改善されましたが(しばらく前)、デバッグは非常に困難です(Java Consoleで完全なトレースを有効にし、javawsソースコードをステップ実行します)。

あなたの状況では、私はさらに一歩進んでそれを機能させるでしょう。おそらく、問題を示す完全なJNLPファイルを提供しますか?

于 2010-01-09T09:55:25.533 に答える
1

jarにマニフェストを使用します。そこで、開始するメインクラスと必要なライブラリを定義できます。マニフェスト仕様のMain-classおよびClass-path引数を参照してください。

于 2010-01-09T06:25:03.390 に答える
0

JNLPは、ネットワーク起動(具体的にはhttp(s))用に設計されており、ネットワークがないと、Javaの実装は非常に混乱する必要があります。Eclipseのような成熟したプロジェクトでさえ、.sh、.batオプションを使用します。

于 2010-01-20T09:04:11.207 に答える