logo

Java で CLASSPATH を設定する方法

クラスパス: CLASSPATH は、アプリケーション クラスローダーが .class ファイルを見つけてロードするために使用する環境変数です。 CLASSPATH は、拡張機能や Java プラットフォームの一部ではないサードパーティおよびユーザー定義のクラスを検索するためのパスを定義します。 CLASSPATH を設定するときは、.class ファイルと JAR ファイルを含むすべてのディレクトリを含めます。

次の場合には CLASSPATH を設定する必要があります。

Javaで配列を返す方法
  • 現在のディレクトリまたはサブディレクトリに存在しないクラスをロードする必要があります。
  • 拡張機能メカニズムで指定された場所にないクラスをロードする必要があります。

CLASSPATH は、CLASSPATH の設定内容によって異なります。 CLASSPATH の最後にはディレクトリ名またはファイル名が付きます。次の点は、CLASSPATH の終わりを何にするかについて説明します。

  • JAR または zip の場合、ファイルにはクラス ファイルが含まれており、CLASSPATH は zip または JAR ファイルの名前で終わります。
  • クラス ファイルが名前のないパッケージに配置されている場合、CLASSPATH はクラス ファイルを含むディレクトリで終わります。
  • クラス ファイルが名前付きパッケージに配置されている場合、CLASSPATH は、完全なパッケージ名のルート パッケージ、つまり完全なパッケージ名の最初のパッケージを含むディレクトリで終わります。

CLASSPATH のデフォルト値はドット (.) です。これは、現在のディレクトリのみが検索されることを意味します。 CLASSPATH 変数を設定するか、-classpath コマンド (略して -cp) を使用すると、CLASSPATH のデフォルト値が上書きされます。現在のディレクトリを検索パスに含める場合は、新しい設定にドット (.) を入力します。

CLASSPATH は、現在のディレクトリに存在するクラス ファイルを見つけると、CLASSPATH に含まれる別のディレクトリに同じ名前のクラスが存在するかどうかに関係なく、そのクラスをロードして使用します。

複数のクラスパスを設定する場合は、各 CLASSPATH をセミコロン (;) で区切る必要があります。

JVM を使用するサードパーティ アプリケーション (MySQL および Oracle) は、CLASSPATH 環境変数を変更して、使用するライブラリを含めることができます。クラスはディレクトリまたはアーカイブ ファイルに保存できます。 Java プラットフォームのクラスは rt.jar に保存されます。

CLASSPATH を設定するには、コマンド プロンプトを使用する方法と環境変数を設定する方法の 2 つがあります。

MySQL データベースの CLASSPATH を設定する方法を見てみましょう。

ステップ1: 「Windows」ボタンをクリックし、「コントロール パネル」を選択します。 「システム」を選択します。

Java で CLASSPATH を設定する方法

ステップ2: クリック 高度なシステム設定

Java で CLASSPATH を設定する方法

ステップ 3: ダイアログボックスが開きます。 「環境変数」をクリックします。

分数で表すと 0.2
Java で CLASSPATH を設定する方法

ステップ 4: CLASSPATH がシステム環境変数にすでに存在する場合は、「編集」ボタンをクリックし、最後にセミコロン (;) を入力します。 MySQL-Connector Java.jar ファイルのパスを貼り付けます。

CLASSPATH がシステム環境変数に存在しない場合は、「新規」ボタンをクリックし、変数名に「CLASSPATH」、変数値に「変数」を入力します。 C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;

覚えておいてください: ;.; を入れてください。クラスパスの最後にあります。

Java で CLASSPATH を設定する方法

パスとクラスパスの違い

パス クラスパス
PATH は環境変数です。 CLASSPATH も環境変数です。
これは、オペレーティング システムが実行可能ファイル (.exe) を検索するために使用します。 これは、.class ファイルを見つけるために Application ClassLoader によって使用されます。
.exe ファイルを含むディレクトリを含める必要があります。 .class ファイルと JAR ファイルを含むすべてのディレクトリを含める必要があります。
PATH 環境変数は、一度設定すると上書きできません。 CLASSPATH 環境変数は、javac と java コマンドの両方にコマンド ライン オプション -cp または -CLASSPATH を使用することでオーバーライドできます。

Windows でコマンド プロンプトを使用して CLASSPATH を設定する方法

コマンド プロンプトに次のコマンドを入力し、Enter キーを押します。

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

上記のコマンドの set は、ユーザーが変数値を変更できるようにする内部 DOS コマンドです。 CLASSPATH は変数名です。パーセント記号 (%) で囲まれた変数は、既存の環境変数です。セミコロンは区切り文字で、(;) の後に rt.jar ファイルの PATH が続きます。

SQL複数テーブル選択

Java での ext フォルダーの仕組み

ext ディレクトリは CLASSPATH と少し似た働きをします。 ext ディレクトリはクラスロードメカニズムの一部です。 ext ディレクトリの JAR 内で使用できるクラスは、Java アプリケーションで使用できます。

次の表は、CLASSPATH と拡張メカニズムの主な違いを示しています。

特徴 クラスパス 拡張機構
クラスのロード順序 CLASSPATH はブートストラップと拡張機能のロード後にロードされます。 ext はブートストラップのロード後、CLASSPATH のロード前にロードされます。
範囲 これはアプリケーション固有のものです。ホスト上のすべての JRE は CLASSPATH 環境変数です。 すべての JVM は特定の JRE java.ext.dirs で実行されます。
パッケージ名 java.class.path は、クラス ファイルを含むディレクトリと JAR アーカイブを検索するために使用されます。 java.ext.dirs は、拡張メカニズムがクラスをロードする場所を指定するために使用されます。
仕様 拡張子.jarを含む名前と.classファイルを含むディレクトリで指定します。 指定したディレクトリ内のすべての JAR ファイルがロードされます。

このメカニズムは、ファイルに .jar 拡張子が付いていない場合でも、拡張子ディレクトリからすべての .jar ファイルを取得します。これの実装は、クラスパス ディレクトリに配置された jar の名前を .jar 以外の拡張子を持つように変更できる場合です。ワイルドカード (*) は選択しません。この手法は、拡張ディレクトリでは機能しません。

例を通して実行プロセスを理解しましょう。

A.java

文字列形式のJava
 public class A { public String toString() { return 'hello'; } } 

B.ジャワ

 public class B { public static void main(final String[] args) { System.out.println(new A()); } } 

A.java ファイルをコンパイルします。コンパイルされた A.class ファイルを A.jar にアーカイブします。この JAR ファイルを、コンパイルされた B.class ファイルとは別のディレクトリに配置します。

クラスパスの使用法を示すために、A.jar ファイルをディレクトリ C:JavaPrograms に配置し、B が使用するワイルドカード (*) を使用してその JAR にアクセスします。

現在のディレクトリから A.class を削除した後でも、B はまだ A.class をロードできることがわかりました。 Java ランチャーは C:JavaProgram を明示的に検索しました。同じディレクトリに存在せず、明示的なクラスパスを指定せずに、クラスをロードすることもできます。

これは、その JRE を使用しているすべてのアプリケーションが、クラスパス上で明示的に指定しなくても同じクラスを参照できるため、拡張メカニズムを使用する利点としてよく言われます。

同じ CLASSPATH 参照ディレクトリ内で A.jar の名前を A.backup に変更するとどうなるでしょうか。 CLASSPATH 参照に .jar 拡張子がないため、同じことを行うと NoClassDefFoundError が発生します。