質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

5669閲覧

spring bootのエラーについて

star0415

総合スコア25

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2018/10/22 01:31

編集2018/10/22 22:04

お世話になります。

以下のページのspring bootアプリケーションの実行でエラーが起きて困っています。
解決方法をご教示いただけますでしょうか?
https://dzone.com/articles/spring-batch-csv-processing


追記
javax.batch.api.jarファイルを設定するとエラー内容が変わりました。
後はdatasourceの設定ファイルの書き方がわかりません。どのように定義すればよろしいでしょうか?ファイル名とファイルの書き方をご教示ください。
DBはpostgresです。

java

1package com.michaelcgood; 2 3import javax.sql.DataSource; 4 5import org.springframework.batch.core.Job; 6import org.springframework.batch.core.Step; 7import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; 8import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; 9import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; 10import org.springframework.batch.core.launch.support.RunIdIncrementer; 11import org.springframework.batch.item.ItemProcessor; 12import org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider; 13import org.springframework.batch.item.database.JdbcBatchItemWriter; 14import org.springframework.batch.item.file.FlatFileItemReader; 15import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper; 16import org.springframework.batch.item.file.mapping.DefaultLineMapper; 17import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; 18import org.springframework.beans.factory.annotation.Autowired; 19import org.springframework.context.annotation.Bean; 20import org.springframework.context.annotation.Configuration; 21import org.springframework.core.io.ClassPathResource; 22 23@EnableBatchProcessing 24@Configuration 25public class CsvFileToDatabaseConfig { 26 27@Autowired 28public JobBuilderFactory jobBuilderFactory; 29 30@Autowired 31public StepBuilderFactory stepBuilderFactory; 32 33@Autowired 34public DataSource dataSource; 35 36// begin reader, writer, and processor 37 38 39@Bean 40public FlatFileItemReader<AnimeDTO> csvAnimeReader(){ 41FlatFileItemReader<AnimeDTO> reader = new FlatFileItemReader<AnimeDTO>(); 42reader.setResource(new ClassPathResource("animescsv.csv")); 43reader.setLineMapper(new DefaultLineMapper<AnimeDTO>() {{ 44setLineTokenizer(new DelimitedLineTokenizer() {{ 45setNames(new String[] { "id", "title", "description" }); 46}}); 47setFieldSetMapper(new BeanWrapperFieldSetMapper<AnimeDTO>() {{ 48setTargetType(AnimeDTO.class); 49}}); 50}}); 51return reader; 52} 53 54 55@Bean 56ItemProcessor<AnimeDTO, AnimeDTO> csvAnimeProcessor() { 57return new AnimeProcessor(); 58} 59 60@Bean 61public JdbcBatchItemWriter<AnimeDTO> csvAnimeWriter() { 62JdbcBatchItemWriter<AnimeDTO> csvAnimeWriter = new JdbcBatchItemWriter<AnimeDTO>(); 63csvAnimeWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<AnimeDTO>()); 64csvAnimeWriter.setSql("INSERT INTO animes (id, title, description) VALUES (:id, :title, :description)"); 65csvAnimeWriter.setDataSource(dataSource); 66return csvAnimeWriter; 67} 68 69// end reader, writer, and processor 70 71// begin job info 72@Bean 73public Step csvFileToDatabaseStep() { 74return stepBuilderFactory.get("csvFileToDatabaseStep") 75.<AnimeDTO, AnimeDTO>chunk(1) 76.reader(csvAnimeReader()) 77.processor(csvAnimeProcessor()) 78.writer(csvAnimeWriter()) 79.build(); 80} 81 82@Bean 83Job csvFileToDatabaseJob(JobCompletionNotificationListener listener) { 84return jobBuilderFactory.get("csvFileToDatabaseJob") 85.incrementer(new RunIdIncrementer()) 86.listener(listener) 87.flow(csvFileToDatabaseStep()) 88.end() 89.build(); 90} 91// end job info 92} 93

エラー内容
[2018-10-22 09:12:07.464] - 16092 重大 [main] --- org.springframework.boot.SpringApplication: Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'csvFileToDatabaseConfig': Unsatisfied dependency expressed through field 'jobBuilderFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobBuilders' defined in class path resource [org/springframework/batch/core/configuration/annotation/SimpleBatchConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.batch.core.configuration.annotation.JobBuilderFactory]: Factory method 'jobBuilders' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobRepository' defined in class path resource [org/springframework/batch/core/configuration/annotation/SimpleBatchConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.batch.core.repository.JobRepository]: Factory method 'jobRepository' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/batch/runtime/JobInstance
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
at com.michaelcgood.SpringBatchCsvApplication.main(SpringBatchCsvApplication.java:10)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobBuilders' defined in class path resource [org/springframework/batch/core/configuration/annotation/SimpleBatchConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/10/22 01:51

質問内容編集が反映されていないようですね
m.ts10806

2018/10/22 01:54

対象のソースコードをご提示ください。実際に再現できる手順とコードなどの情報は必須です。またコードやエラーはマークダウンのcode機能を利用してください
guest

回答2

0

ベストアンサー

サイトの最下部にある https://github.com/michaelcgood/Spring-Batch-CSV-Example をmavenプロジェクトとしてインポートし、SpringBootプロジェクトとして実行しても、特に何も問題は発生しませんでした。

https://dzone.com/articles/spring-batch-csv-processing に書かれている記事は、このソース(SpringBatch)を利用したコードの書き方を紹介するものなので、すべてのコードが書かれている状態ではありません。

投稿2018/10/22 06:36

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

star0415

2018/10/22 07:01

mavenがセキュリティ上の問題で使用できないのでjarを設定して動作させています。 jarが足りてないのでしょうか?
A-pZ

2018/10/22 07:14

さすがにどのライブラリが不足しているかは導入している一覧がないとわかりませんが、SpringBootを利用している以上、大量のライブラリを必要します。SpringBoot以外に使っているライブラリでは、hsqldbとcommons-lang3.6を利用しているようです。
star0415

2018/10/22 07:57

jarの問題は解決したようです。ありがとうございます。
guest

0

csvFileToDatabaseConfigというbeanが作成できないので、jobBuilderFactoryにインジェクションできないということになるかと思います。

設定が抜けてるとか、ComponentScanの対象になってないとか、そもそもbean作ってないとか...

Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'csvFileToDatabaseConfig': Unsatisfied dependency expressed through field 'jobBuilderFactory'

投稿2018/10/22 02:29

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

star0415

2018/10/22 03:54

設定というのはどのように行うのでしょうか? アクセス制限のためソースは登録できません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問