※当サイトの記事には、広告・プロモーションが含まれます。

Eclipseの「プロジェクトのビルド」でクラスパスは良しなに面倒見てくれない件

nazology.net

⇧ う~む、解明できる日が来るんだろうか...

Eclipseの「プロジェクトのビルド」でクラスパスは良しなに面倒見てくれない件

MavenやGradleのようなビルドツールを基準に考えてしまっていたので、Eclipseの「プロジェクトのビルド」はクラスパスを良しなに面倒見てくれないとは思わなくてハマった...

同じ職場の方に教えてもらって無事解決&原因に気付いたのだけど、新たな気付きの機会をいただき感謝です。

というわけで、

qiita.com

⇧ 上記サイト様を参考に、

のjarファイルをダウンロードしておき、Eclipseの「Javaプロジェクト」に配置。

からの~、「プロジェクト(P)」>「プロジェクトのビルド(B)」を選択。

「プロジェクト・エクスプローラー」で確認すると、「bin」ファルダに「.class」ファイルが配置されている。

で、「WSL 2(Windows Subsystem for Linux 2)」のUbuntu環境に配置して、

実行すると、

⇧「NoClassDefFoundError」が出ますと。

う~む、Eclipseの「プロジェクトのビルド」はクラスパスとかの面倒は見てくれないようなので、

docs.oracle.com

⇧ 上記を参考に手動でクラスパスを設定してあげないと駄目っぽい...

クラスパスを設定。

export CLASSPATH=/home/ts0818/work/test_log/apps:/home/ts0818/work/test_log/log4j-core-3.0.0-alpha1.jar:/home/ts0818/work/test_log/log4j-api-3.0.0-alpha1.jar

で、実行してみたところ、

別のエラー。

どうやら、

logging.apache.org

Requirements

Log4j 3.x require a minimum of Java 11. For support for older versions of Java see the Log4j 2.x site.

https://logging.apache.org/log4j/3.x/

⇧ 利用していたライブラリが、Java 8に対応していないっぽい...

ライブラリのバージョンを下げました。

Java 8に対応したバージョンのライブラリを配置し、「ビルド・パス」に追加して、元々追加していたJava 8に対応していないライブラリは「ビルド・パス」から除外しておきます。

で、改めて、「プロジェクト(P)」>「プロジェクトのビルド(B)」を選択。

で、「WSL 2(Windows Subsystem for Linux 2)」のUbuntu環境にライブラリとビルドした「.class」ファイルを配置し、

改めて、クラスパスを設定。で、実行。

export CLASSPATH=/home/ts0818/work/test_log/apps:/home/ts0818/work/test_log/log4j-core-2.21.0.jar:/home/ts0818/work/test_log/log4j-api-2.21.0.jar

⇧ 動きました。

というわけで、Eclipseの「プロジェクトのビルド」は、MavenやGradleのようなビルドツールのように良しなにクラスパスの面倒を見てくれないようなので、要注意ですかね...

なくなって初めて分かる有難み、MavenやGradleのようなビルドツールはいろいろ面倒なことを受け持ってくれていたんだなぁ、と。

というよりも、MavenやGradleのようなビルドツールでビルド後、デプロイする時は、jarとかwarにしてるから、煩わしいクラスパスの設定とかしないで済んでいるだけなんだろうか?

まぁ、それだけ、ブラックボックス化してるとも言えるんかね...

毎度モヤモヤ感が半端ない...

今回はこのへんで。