9

Java クラス パスに相対パスがある場合、現在の作業ディレクトリを検索するだけです。マニフェスト ファイルで宣言されたクラス パスについても同じことが言えます。マニフェスト ファイルでは、それは jar があるディレクトリに対して相対的ですか?

元。コマンドライン

java -cp somejar.jar

または

マニフェスト

Class-Path: somejar.jar
4

2 に答える 2

9

クラスパス-cp somejar.jarに追加していると言う場合。コマンドを入力したときに現在いるディレクトリからsomejar.jarのみ検索を試みます。somejar.jar

マニフェストで言うなら

Class-Path: somejar.jar

somejar.jarマニフェストが配置されているディレクトリ(別名jar内)からクラスパスにjarを追加すると言っています。

補足として、-jar、-cp、または -classpath を使用してクラスパスを指定すると、システム変数 CLASSPATH がオーバーライドされます。

詳細については、http://docs.oracle.com/javase/tutorial/deployment/jar/downman.htmlを参照してください。

于 2013-05-11T23:33:59.717 に答える
5

あなたは実際に2つの異なるケースについて言及しました:

ケース #1

java -cp foo/bar/somejar.jar ...

この場合、JAR (または何でも) への相対パスは、現在のディレクトリに対して相対的に解決されます。

ケース#2

java -jar foo/bar/somejar.jar ...

somejar.jar が含まれている場所

Class-Path: anotherjar.jar

この場合、「foo/bar/somejar.jar」は現在のディレクトリに対して相対的に解決されますが (上記のように)、「anotherjar.jar」は「somejar.jar」を含むディレクトリに対して相対的に解決されます。

-cp(余談ですが、JARファイルがまたはを介し​​てインクルードされた場合、 Manifest Class-Path: 属性が尊重されると理解していますが$CLASSPATH、そのJARからロードされたクラスの依存関係にのみ影響します...以下の「findingclasses」リンクを参照してください。)

参考文献:

于 2013-05-12T00:11:24.383 に答える