EclipseでJavaプロジェクトのビルドパス(クラスパス)の確認方法と、ビルドパスのディレクトリを追加・除去する方法と、あとJavaコードでJavaクラスパス情報の一覧を取得・表示する方法などを説明しています。
※ 本ページはプロモーションが含まれています。
ここでは、Eclipse上でJavaプロジェクトのビルドパス(クラスパス)ディレクトリを確認したり、ディレクトリをビルドパスの通ったディレクトリにしたり、ビルドパスから除外する(パスを通したりパス無しにしたり)設定方法について説明します。あとはJavaコードでJavaクラスパス情報の一覧を確認したりもしています。
・動作環境やバージョンは以下の通りです。
OS:macOS Big Sur(バージョン11.7.1)
->Windowsでもほとんど同じだと思う。
開発環境:Eclipse(Pleiades All in One Java Full Edition版)
■ビルドパスとは?
ビルドパスは、EclipseでJavaプロジェクトをビルド(コンパイルなど)する際に必要なJavaクラスやプロパティファイルがあるディレクトリ、jarファイルなどのライブラリなどの場所の事です。なので、必要なJavaクラスがあるディレクトリやjarライブラリをビルドパスに設定しないとビルド作業や実行時にエラーが出ます。クラスパスや単純にパスとも言います。パスが通ってなくてエラーが出るからこのディレクトリをパス(ビルドパス、クラスパス)に追加するみたいな言い方もします。
ちなみにJavaプロジェクトのビルド管理ツールにはMavenやGradleがあります(古い物だとAntとかも)。
Eclipse上のJava関連プロジェクトで(ただのJavaプロジェクトやSpring Bootプロジェクトとか)、あるディレクトリをビルドパス(クラスパス)に設定したい場合、パッケージ・エクスプローラビューで設定したいディレクトリを右クリック->"ビルド・パス"->"ソース・フォルダーとして使用"を選択すれば、そのディレクトリをプロジェクトのビルド・クラスパスにする事ができます。
元々ただのディレクトリだった物をビルドパスに追加すると、そのディレクトリのアイコンがソースフォルダーのアイコンに変化します。(ビルドパスに追加したら、あくまでMaven,GradleなどのJavaビルドツールの管理的にただのディレクトリからビルドパスの通ったディレクトリになるという意味です。)
そして、ビルドパスに設定したディレクトリをパス無しのディレクトリ(ただのディレクトリ)に戻したい場合、ビルドパスのディレクトリを右クリック->"ビルド・パス"->"ビルド・パスからの除外"を選択すればできます。
別ページでEclipse(Pleiades、STSプラグインあり)の動作を少しでも軽くする(速くする)設定変更について書いているので、良ければ参考にしてください。
Eclipse(Pleiades)の動作が重い、遅いので軽くする ~ ヒープメモリの調整とか【macOS】
Javaプロジェクトでビルドパスに設定されている全てのディレクトリを確認したい場合、プロジェクトを右クリック->"ビルド・パス"->"ビルド・パスの構成"を選択します。
すると、プロジェクトのプロパティ設定のJavaのビルド・パスの設定画面が開くので、この画面のソースタブを選択するとビルドパス(クラスパス)の通っているディレクトリの一覧が表示されます。
このJavaのビルドパスの設定画面からでも、フォルダーの追加や除去する事で、新しくディレクトリにビルドパスを通したり、ビルドパスから外す設定ができます。
あと、このビルドパス設定画面のライブラリータブには、JDK(Java-SE)やビルドツールが管理している各種Javaライブラリ(Spring,lombokなど)の一覧を確認できます。
あと、システムプロパティ情報を取得するJavaのプログラミングコードで、Javaのクラスパス情報(クラスパスディレクトリやクラスパスファイル)を確認する事もできます。
System.out.println("java.class.path :" + System.getProperty("java.class.path"));
たぶんこのコードだとクラスパス情報が「:」繋がりの文字列で表示されて見にくいと思うので、「:」で分割して1行ずつ表示するこちらのコードの方が分かりやすいと思います。
System.out.println("====== java.class.path =====");
String[] classPaths = System.getProperty("java.class.path").split(":");
Arrays.stream(classPaths).forEach(s -> System.out.println(s));