Java
Eclipse
spring
バッチ処理
NoClassDefFoundError

Eclipseでバッチ処理プロジェクトのベースを作成する。

この記事は、Eclipse でバッチ処理を作成することになり、バッチ処理プロジェクトをどのように作るのか、手探りで試行錯誤した事について記載したものです。

前提作業:
1.以下のサイトから、spring-tool-suite をダウンロードして、適当な場所に展開します。
(例:C:\pleiades\ など)
ダウンロード先:https://spring.io/tools/sts/all 
2.Eclipse を起動して、1.で展開した、C:\pleiades\sts-3.9.2.RELEASE をWorkSpace に指定して起動します。

プロジェクトの作成作業:
1.パッケージエクスプローラーで、右クリック->新規->プロジェクト->Springスタータプロジェクトを選択します。
image.png

2.名前を入力 -> ここでは、BatchTestApp と入力、次へをクリックします。
image.png

3.バッチをチェックして、完了ボタンをクリックして終了。
image.png

4.バッチ処理を動かすmain関数が自動生成されています。
image.png

5.BatchTestApplication.java を右クリックして、デバッグ->Javaアプリケーションをクリックして実行してみます。
image.png

6.あれ?、エラーになります。
image.png

Exception in thread "main" java.lang.NoClassDefFoundError:org/springframework/core/env/EnvironmentCapable
調べてみると、org/springframework/core/env/EnvironmentCapableクラスが見つからないよというエラーです。

7.pom.xml を確認してみる。
image.png

いろいろ試行錯誤しながら調べてみると、pom.xml の spring-boot-startar-parent の version が 1.5.9.RELEASE となっているのが原因です。BatchTestApplication.java の ソースコードで試しに
import org.springframework.core.env.EnvironmentCapable; と入力してみると、インポートされた org.springframework.core.env.EnvironmentCapable は見つかりませんとエラーになっています。

8.pom.xml を修正する。(バージョンを 1.2.1.RELEASE にする)
image.png

9.再度、BatchTestApplication.java を右クリックして、デバッグ->Javaアプリケーションをクリックして実行してみます。
image.png

なぜ、1.5.9.RELEASE だとクラスが無いのかは分からないですが、これで Spring は動くようになりました。