export CLASSPATH=.;../somejar.jar;../mysql-connector-java-5.1.6-bin.jar
java -Xmx500m folder.subfolder../dit1/some.xml
cd ..
Linuxで既存のクラスパスにクラスパスを設定するための上記のステートメントは正しいかどうか
CLASSPATH を設定するのは好きではありません。CLASSPATH はグローバル変数であり、それ自体は悪です:
したがって、推奨される方法は、jvm の実行ごとにクラスパスを設定することです。次に例を示します。
java -Xmx500m -cp ".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" "folder.subfolder../dit1/some.xml
長くなった場合、標準的な手順は、入力を節約するために bash またはバッチ スクリプトでラップすることです。
正当な理由がない限り、既存のクラスパスを破壊的に破棄しないことを常にお勧めします。
次の行は、既存のクラスパスを保持して追加します。
export CLASSPATH="$CLASSPATH:foo.jar:../bar.jar"
Windows と Linux で Classpath を設定する際の重要な違いは、「;」であるパス区切り文字です。Windows では (セミコロン)、Linux では ":" (コロン) です。また%PATH%
、Windows では既存のパス変数の値を表すために使用されますが${PATH}
、Linux (bash シェル) では同じ目的で使用されます。Linux でクラスパスを設定する方法は次のとおりです。
export CLASSPATH=${CLASSPATH}:/new/path
しかし、そのようなクラスパスは非常に扱いにくく、正しいクラスパスを設定した後でもプログラムが機能しないのはなぜだろうと思うかもしれません。注意事項:
-cp
CLASSPATH
options は環境変数をオーバーライドします。-cp
をオーバーライドしCLASSPATH
ます。Linuxでのパスは、セミコロン(:
)ではなくコロン( )で区切ら;
れています。これは、theatrusが彼の例で正しく使用したためです。Javaはこの規則を尊重していると思います。
andyが提案したものの代わりに、次の形式を使用することもできます(コマンドの実行中にCLASSPATHを設定します)。
CLASSPATH=".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" java -Xmx500m ...
どちらか便利な方。