ClassPathの詳細
3869 ワード
JAVAを使用してJAVAに基づいて作成されたプログラムを開発または実行するには、JDKをインストールした後、一般的に次のような環境変数を設定する必要があります(Windowsの例).
では、それらの役割は何でしょうか.JAVA_HOMEこの変数は、JAVA実行環境のインストールパスを示します.JAVAとの間には、字面の類似度が高い以外に、何のつながりもありません.この変数を構成するには、次の3つの理由があります.は、その後の2つの変数の構成を容易にする. JAVAのアップグレードが容易です.アップグレードする場合は、この変数を新しいバージョンのJAVAインストールディレクトリに指定するだけです. いくつかのアプリケーションは、この変数に依存する.例えばよく使われるWebコンテナTomcatやIDE開発ソフトEclipseなど.
依存変数が適用されていないと判断した場合は、構成しなくてもよい.しかし、最初の2つの利点に基づいて、一般的にはそうすることをお勧めしません.
CLASSSPATHこの変数は、JAVA実行環境JREが
PATHこの変数は、オペレーティングシステムが実行可能プログラムを検索するパスを示す.この変数はオペレーティングシステムによって使用され、
この3つの変数の用途を理解して、JAVAプログラムに対して最も重要なのはでは、 では、上記の環境変数 コマンドラインパラメータ
このうち、第3の方式と第4の方式は、他のJAVAアプリケーションに影響を及ぼさずに単一のJAVAアプリケーションを独自に構成することができ、第3の方式の構成
各パスの間に英字のセミコロン';'を使用区切りを行います(linux環境では英語のコロン':'で区切ります).この例の単一のパスはフォルダであり、それ以外に、単一のパスは特定のjarパケットとzipパケットパスであってもよい.クラスファイルのパスが次の場合
クラスが
クラスが次のサードパーティjarパッケージを参照している場合:
このとき
クラスが複数のサードパーティ製jarパッケージ:a.jar b.jar c.jarを参照している場合、
ワイルドカード「*」を使用して、次のように表すこともできます.
次の点に注意してください.ワイルドカードは、ディレクトリの下の は、 ワイルドカードは、構成の第2および第3の方法のみを適用し、第4の方法
第2の点について、前の例では、プログラムの実行時に、システム属性
この順序はJVMロードクラスにとって重要です.特別な場合、b.jarとc.jarの両方に同じパッケージ名と同じクラスが含まれていると仮定すると、JVMはc.jarを検索したときにクラスを発見した後、b.jarを検索し続けません.JAVAアプリケーションがjarパケットのロード順序に依存する場合は、ワイルドカードを使用することなくjarパケットの順序を明確に指定する必要があります.
第3の点について、
セミコロン';'ではなく、パスをスペースで区切ることに注意してください.または「:」.また、クラスパスが多すぎて改行が必要な場合は、2行目から2つのスペースで始まる必要があります.
付:JAVA類パス公式サイト紹介Manifestファイル類パス説明jarパッケージのロード順序によるBUG
JAVA_HOME : C:\Program Files\Java\jdk1.8.0_112
CLASSPATH : .;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
PATH : your-unique-entries;%JAVA_HOME%\bin
では、それらの役割は何でしょうか.JAVA_HOMEこの変数は、JAVA実行環境のインストールパスを示します.JAVAとの間には、字面の類似度が高い以外に、何のつながりもありません.この変数を構成するには、次の3つの理由があります.
依存変数が適用されていないと判断した場合は、構成しなくてもよい.しかし、最初の2つの利点に基づいて、一般的にはそうすることをお勧めしません.
CLASSSPATHこの変数は、JAVA実行環境JREが
.class
ファイルを検索するパスを示します.PATHこの変数は、オペレーティングシステムが実行可能プログラムを検索するパスを示す.この変数はオペレーティングシステムによって使用され、
%JAVA_HOME%\bin
は、java
、javac
などのディレクトリのコマンドラインおよびその他のJDKツールに迅速にアクセスするように構成される.この3つの変数の用途を理解して、JAVAプログラムに対して最も重要なのは
ClassPath
環境変数であることを知っていて、それはJAVAプログラムが第三者とユーザーのカスタムクラスを検索する経路を示すため、もし正しく配置しなければ、JAVAプログラムは正常に運行することができません.では、ClassPath
を正しく構成するにはどうすればいいのでしょうか.次の4つの方法があります.ClassPath
のデフォルトの割り当て値は「.」であり、クラスパスが現在のディレクトリとそのサブディレクトリであることを示します.CLASSPATH
を使用して設定され、設定後にデフォルトの構成が上書きされます.-classpath
または-cp
を使用して設定すると、環境変数構成およびデフォルト構成が上書きされます.manifest
ファイルを含む実行可能jarパッケージを実行すると、manifest
ファイルによって設定されたクラスパスは、最初の3つの構成を上書きします.このうち、第3の方式と第4の方式は、他のJAVAアプリケーションに影響を及ぼさずに単一のJAVAアプリケーションを独自に構成することができ、第3の方式の構成
ClassPath
の使用を公式に推奨している.具体的な配置方法は冒頭で述べたように、以下のような形式である. .;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
各パスの間に英字のセミコロン';'を使用区切りを行います(linux環境では英語のコロン':'で区切ります).この例の単一のパスはフォルダであり、それ以外に、単一のパスは特定のjarパケットとzipパケットパスであってもよい.クラスファイルのパスが次の場合
c:\java\workspace\test\classes\com\zdb\Test.class
クラスが
com.zdb
パッケージの下にある場合、正しく設定されたClassPath
は次のとおりです. c:\java\workspace\test\classes
クラスが次のサードパーティjarパッケージを参照している場合:
c:\java\workspace\test\lib\a.jar
このとき
ClassPath
は、 c:\java\workspace\test\classes;c:\java\workspace\test\lib\a.jar
クラスが複数のサードパーティ製jarパッケージ:a.jar b.jar c.jarを参照している場合、
ClassPath
は次のようになります. c:\java\workspace\test\classes;c:\java\workspace\test\lib\a.jar;
c:\java\workspace\test\lib\b.jar;c:\java\workspace\test\lib\c.jar
ワイルドカード「*」を使用して、次のように表すこともできます.
c:\java\workspace\test\classes;c:\java\workspace\test\lib\*
次の点に注意してください.
.jar
および.JAR
ファイルのみに一致し、それ以外は.class
ファイルにもサブディレクトリにも一致しません.main
メソッドが実行される前に、ワイルドカードが自動的に特定のパスに展開され、展開パスの順序はプラットフォームによって異なり、同じマシンの異なる時刻でも異なる.manifest
ファイルではワイルドカードを使用できません.第2の点について、前の例では、プログラムの実行時に、システム属性
java.class.path
を使用して得られたクラスパスは、(abcの順序が変更されていることに注意して): c:\java\workspace\test\classes;c:\java\workspace\test\lib\a.jar;
c:\java\workspace\test\lib\c.jar;c:\java\workspace\test\lib\b.jar
この順序はJVMロードクラスにとって重要です.特別な場合、b.jarとc.jarの両方に同じパッケージ名と同じクラスが含まれていると仮定すると、JVMはc.jarを検索したときにクラスを発見した後、b.jarを検索し続けません.JAVAアプリケーションがjarパケットのロード順序に依存する場合は、ワイルドカードを使用することなくjarパケットの順序を明確に指定する必要があります.
第3の点について、
manifest
ファイル構成クラスパスは、最初の3つの方法とは少し異なります.形式は次のとおりです.Class-Path: jar1-name jar2-name directory-name/jar3-name
jar4-name ...
jar-name
セミコロン';'ではなく、パスをスペースで区切ることに注意してください.または「:」.また、クラスパスが多すぎて改行が必要な場合は、2行目から2つのスペースで始まる必要があります.
付:JAVA類パス公式サイト紹介Manifestファイル類パス説明jarパッケージのロード順序によるBUG