2011-08-11 13 views
2

私はコンソールアプリケーション用の小さなインターフェースを作成しています。そのためコンソールアプリケーションを実行してから、コマンドラインでコマンドを実行しています。Java Web Startを使用して外部JARにクラスパスを提供する方法

私の問題は、実行しているJARにJARライブラリへのパスを提供する必要があることです。しかし、私はこの情報を正しく伝える方法は知らない。 JNLP File Syntaxにある情報によれば、JNLPファイルのJARパスにすべての外部JARを追加する必要があります。

このファイルには、次のようになります。

<resources> 
    <j2se version="1.5+"/> 
    <jar href="uToolGUI.jar" main="true"/> 
    <jar href="uTool.jar"/> 
    <jar href="jpcap.jar"/> 
</resources> 

私は、現在実行しています行はこれです:

java.exe -cp lib\jpcap.jar;. -jar D:\jarCreateLib\uTool.jar gen 

だから私は質問はつまるところ推測する - どのように私は私の希望を参照してくださいWeb Startがそうすることができるような方法でライブラリを作成することができます。

これはEclipse経由で実行されたときの魅力のように機能します。 java -jar...で実行しなければならない場合は、-Djnlp.java.library.path=libに追加する必要がありますが、Java Web Startを実行しようとすると、これは何の違いもありません。

ご回答ありがとうございます。

+0

「マニフェスト」とは何ですか? – trashgod

+0

スタンダードのものとファイルの署名以外にこの行があります メインクラス:uTool.View.MainViewFrame –

答えて

2

コマンドjava -jar …は、-cpオプションで指定されたパスではなく、マニフェストで見つかったClass-Pathを使用します。 JNLP File Syntaxで述べたようにJNLPファイルで指定された最初のJARファイルから見つけることができる場合には、JNLPファイル内main-class属性を省略することができる

 
Class-Path: lib/uToolGUI.jar lib/uTool.jar lib/jpcap.jar 

hereを示唆したように、あなたはこのようなマニフェストエントリを必要としますMain-Class JARファイルのマニフェストエントリ。 libディレクトリ内の1つ、jarCreateLibの他&へのコマンドライン呼び出しポイントながら、コードベース -

1

JNLPスニペットは、ジャーが同じ(名前)ディレクトリにある前提。

あなたは、JaNeLAでJNLPをチェックすることを強くお勧めします。チェック対象の1つは、JNLPで宣言されたリソースが、指定されたコードベースに対して使用可能であることです。

+0

+1パスの不一致がおそらく重大です。補助的なJARをまたはマニフェストの 'Class-Path'エントリとして指定するのが適切でしょうか? – trashgod

+1

@trashgodはい。 'Class-Path'はもっと新しいです(アプレットとJWS AFAIRでは1.5ですが、それ以降は両方とも動作します)。 JaNeLAはJNLP情報のみを使用するため、マニフェストで指定されたすべてのJarファイルが欠落します。 OTOHは 'resources'セクションでJarを宣言すると利点があります。ダウンロードは、熱心な/怠惰な、部品仕様、アーカイブを拡張機能に分ける能力などのために制御できます。 –

関連する問題