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でのクラスパスの設定の重要な違いは、パス区切り文字である「;」です。 (セミコロン)Windowsでは ":"(コロン)、Linuxでは。また、%PATH%
はWindowsの既存のパス変数の値を表すために使用され、${PATH}
はLinux(bashシェル内)で同じ目的で使用されます。 Linuxでクラスパスを設定する方法は次のとおりです。
export CLASSPATH=${CLASSPATH}:/new/path
しかし、そのようなクラスパスは非常にトリッキーであり、正しいクラスパスを設定した後でもプログラムが機能しない理由を疑問に思うかもしれません。注意事項:
-cp
オプションはCLASSPATH
環境変数をオーバーライドします。-cp
およびCLASSPATH
環境変数の両方をオーバーライドします。参照: Javaでのクラスパスの動作 。
Linuxでのパスはコロン(:
)、セミコロン(;
)、theatrusが彼の例で正しく使用したため。 Javaはこの慣習を尊重します。
andy推奨 の代わりに、次の形式を使用することもできます(コマンドの実行中にCLASSPATHを設定します)。
CLASSPATH=".:../somejar.jar:../mysql-connector-Java-5.1.6-bin.jar" Java -Xmx500m ...
どちらか都合のよい方。