[解決済み] CommandLineRunnerの実行に失敗しました - Spring Batch
2022-02-17 04:51:02
質問
私はSpringバッチの初心者ですが、以下の例外が発生し、解決することができません。
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:781) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at com.demo.BatchDemo.main(KnpBatchApplication.java:16) [classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_72]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_72]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_72]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_72]
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.0.1.RELEASE.jar:2.0.1.RELEASE]
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653) ~[na:1.8.0_72]
at java.util.ArrayList.get(ArrayList.java:429) ~[na:1.8.0_72]
at org.springframework.batch.core.JobParametersBuilder.getNextJobParameters(JobParametersBuilder.java:265) ~[spring-batch-core-4.0.1.RELEASE.jar:4.0.1.RELEASE]
at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.execute(JobLauncherCommandLineRunner.java:162) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.executeLocalJobs(JobLauncherCommandLineRunner.java:179) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.launchJobFromProperties(JobLauncherCommandLineRunner.java:134) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.run(JobLauncherCommandLineRunner.java:128) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
... 10 common frames omitted
私のコードはここです。
@SpringBootApplication
public class BatchDemo {
public static void main(String args[])
{
SpringApplication.run(BatchDemo.class);
}
}
を追加することで解決できました。
exclude = BatchAutoConfiguration.class
. しかし、実際の原因を見つけて修正したいのです。
コマンドライン引数は渡していませんし、この例外は常に発生するわけではありません。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>demo_batch</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo_batch</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
解決方法は?
を使用する場合
@SpringBootApplication
SpringのautoConfigurationはデフォルトで有効になっています。クラスパスにSpring Batchの依存関係がロードされているので、Spring BatchのAutoConfigurationも有効になっています。
アプリケーションの起動時に、Spring Batchの自動構成(BatchAutoConfiguration)はRunnerを作成し、BatchConfigで定義されたすべてのジョブを実行します。
この動作を無効にするには
spring.batch.job.enabled
プロパティに
false
をアプリケーションのプロパティに追加するか、あなたが行ったのと同じようにバッチ用の自動設定を除外してください。
関連
-
[解決済み] Spring Hibernate - 現在のスレッドのトランザクション同期セッションを取得できませんでした。
-
[解決済み] spring-ws: エンドポイントマッピングが見つかりませんでした
-
自動配線された依存関係のインジェクションに失敗する; 自動インジェクションに失敗する問題
-
クラスパス上に Spring WebApplicationInitializer のタイプが検出されない Loading configuration file not found or spring main configuration not found.
-
互換性のない型.Found:'int',required:'java.lang.String'.
-
ソースコード解析:SpringはどのようにIOCコンテナにBeanを登録するのですか?
-
一致するビーンは1つだと思ったが、2つ見つかった:onedbJdbcTemplate,twodbJdbcTemplate
-
[解決済み】BeanFactoryとApplicationContextの比較
-
[解決済み] Spring.jpa.hibernate.ddl-autoプロパティは、Springで具体的にどのように動作しますか?
-
[解決済み] Spring Bootのデータベース関連の自動設定をすべて無効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Spring Hibernate - 現在のスレッドのトランザクション同期セッションを取得できませんでした。
-
[解決済み】DispatcherServletの名前[duplicate]でURI...を持つHTTPリクエストのマッピングが見つからない。]
-
[解決済み] <mvc:default-servlet-handler />の必要性と用途は何ですか?
-
[解決済み] NamedParameterJDBCTemplate を使用して挿入すると、「無効な列の種類です」という例外が発生する。
-
[解決済み] WebApplicationContext が見つかりません: ContextLoaderListener が登録されていませんか?
-
[解決済み] HikariPool-1 - プールの初期化で例外が発生する
-
一致するビーンは1つだと思ったが、2つ見つかった:onedbJdbcTemplate,twodbJdbcTemplate
-
[解決済み] Spring.jpa.hibernate.ddl-autoプロパティは、Springで具体的にどのように動作しますか?
-
[解決済み] スコープ("prototype")ビーンスコープで新しいビーンが作成されない
-
[解決済み] Spring Frameworkにおける依存性注入と制御の逆転とは?