4

Win7でスタンドアロンのJavaアプリケーションに複数のクラスパスディレクトリを指定したいのですが、Java7は両方とも64ビットです。

ディレクトリ構造は次のようになります

-app
|-lib
|-dynamicLib
|app.jar

libフォルダーには、マニフェストで直接参照される依存関係が含まれています。のすべてdynamicLibもロードする必要があります。

私は次のことを試しました:

dynamicLib\*マニフェストクラスパスに追加する

dynamicLibこのようにコマンドラインに追加する

java -cp "dynamicLib\*";app.jar my.mainclass 

後者は、引用符の有無、絶対パスと相対パス、逆スラッシュなどです。しかし、両方とも機能しませんでした。

では、jarを実行するときに、既存のクラスパスにワイルドカードディレクトリをどのように追加しますか?

4

4 に答える 4

2

スラッシュを使用し、クラスパス全体を引用符で囲みます。

java -cp "app.jar;dynamicLib/*" my.mainclass
于 2013-03-04T22:29:53.700 に答える
1

クラスパスは問題ないようです。

jarただし、ファイルを実行するには、-jarオプションを使用する必要があります。

java -cp "dynamicLib\*" -jar app.jar

ドキュメントを参照してください。

- アップデート:

  1. 上記のコマンドを使用すると、 からjarファイルまたはJARファイルのみがロードされdynamicLibます。
  2. ワイルドカードは再帰的ではありません: 以下の jar ファイルdynamicLib\nestedDirはロードされません。
于 2013-03-04T17:44:32.660 に答える
0

Oracleのドキュメントから

... .jar、.zip、または.classファイルへのクラスパス。各クラスパスは、クラスパスの設定内容に応じて、ファイル名またはディレクトリで終わる必要があります。

.classファイルを含む.jarまたは.zipファイルの場合、クラスパスは.zipまたは.jarファイルの名前で終わります。

名前のないパッケージ内の.classファイルの場合、クラスパスは.classファイルを含むディレクトリで終わります。

名前付きパッケージ内の.classファイルの場合、クラスパスは、「root」パッケージ(完全なパッケージ名の最初のパッケージ)を含むディレクトリで終わります。

ソース

これは、それが機能し-cp dynamiclib\*ないことを意味します。動的libにjarが含まれている場合は、クラスパスで各jarを指定する必要があります。クラスファイルが含まれている場合は、名前のないパッケージ(デフォルトパッケージ)でクラスが定義されていない限り、フォルダーの定義(*なし)で十分です。

于 2013-03-04T18:02:39.103 に答える