classpathは、アプリケーションが参照するクラスを見つけるためにJavaコンパイラ(コマンド:javac)とJVM(コマンド:java)が見える場所です。 アプリケーションが別のクラスを参照するのはどういう意味ですか?
例::それはそのコードのどこかで、そのクラスを使用することを意味し、簡単な言葉で
public class MyClass{
private AnotherClass referenceToAnotherClass;
.....
}
あなたがこの(のjavac)をコンパイルしようとコンパイラがAnotherClassクラスが必要になります。アプリケーションを実行しようとするときも同じです.JVMにはAnotherClassクラスが必要です。 このクラスを見つけるために、javacとJVMは特定の(セットの)場所を調べます。これらの場所はclasspathによって指定され、linuxではコロンで区切られたディレクトリのリスト(必要なときにAnotherClassを見つけるためにjavac/JVMが表示されるディレクトリ)です。
クラスをコンパイルして実行するには、クラスパスにAnotherClassクラスを含むディレクトリが含まれていることを確認する必要があります。
javac -classpath "dir1;dir2;path/to/AnotherClass;...;dirN" MyClass.java //to compile it
java -classpath "dir1;dir2;path/to/AnotherClass;...;dirN" MyClass //to run it
通常、クラスはjarファイル/ライブラリと呼ばれる「バンドル」の形式で提供されます。この場合、あなたはAnotherClassクラスを含むjarファイルは、あなたのclasspaht上にあることを確認する必要があります:作業ディレクトリにあります(MyClass.java)のクラスをコンパイルする方法を見ることができます上記の例で
javac -classpath "dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN" MyClass.java //to compile it
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN" MyClass //to run it
とコンパイルされたクラスを実行します(現在のディレクトリを表すクラスパスの先頭に "。"があることに注意してください)。このディレクトリはクラスパスにも追加する必要があります。そうしないと、JVMはそれを見つけることができません。
質問に指定したとおりにクラスがjarファイルにある場合は、残りの必要なディレクトリと共にjarもクラスパスにあることを確認する必要があります。
例:
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;path/to/MyClass/jar...;dirN" MyClass //to run it
以上の一般的な(いくつかのパッケージ階層を想定):
java -classpath ".;dir1;dir2;path/to/jar/containing/AnotherClass;path/to/MyClass/jar...;dirN" package.subpackage.MyClass //to run it
あなたは環境変数を定義することができますが、アプリケーションを実行するたびにクラスパスを設定しないようにするためには、 CLASSPATHと呼ばれます。コマンドプロンプトで、Linuxで
、:
export CLASSPATH="dir1;dir2;path/to/jar/containing/AnotherClass;...;dirN"
または〜/ .bashrcのを編集し、最後にどこかにこの行を追加します。
しかし、クラスパスは頻繁に変更されるため、頻繁に必要となるクラスのコアセットにクラスパスを設定し、そのセッションだけ必要なときにクラスパスを拡張することができます。このように:
export CLASSPATH=$CLASSPATH:"new directories according to your current needs"
[Javaクラスパス内のディレクトリにすべてのjarを含める](https://stackoverflow.com/questions/219585/including-all-the-jars-in-a-directory)の可能な複製-within-the-java-classpath) – Stewart