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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

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

Q&A

解決済

2回答

11041閲覧

Spring Batchのコマンド実行でエラー発生

momo1124

総合スコア13

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

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

0グッド

0クリップ

投稿2018/11/25 12:42

編集2018/11/25 12:45

開発環境EclipseでSpring Batchを使用しバッチアプリケーションを作成しています。
Eclipse上で実行に成功しましたが、コマンドからの実行でエラーが発生してしまいます。
解消方法を教えていただきたく思います。

Eclipse環境上では以下で実行ができました。
Javaアプリケーションの実行構成
・メイン・クラス(M):org.springframework.batch.core.launch.support.CommandLineJobRunner
・プログラムの引数(A):com.test.batch.BatchJob job
で設定し実行
BatchJobはJavaで作成したJobクラスを指します。
jobはJavaクラス内の起動Jobを指します。

application.propertiesの構成は以下となります。

この問題解消後外だしする予定です。

xml

1#接続DB設定(テスト用) 2spring.datasource.url=jdbc:oracle:thin:@○○○○○:○○○ 3spring.datasource.username=○○○○○○ 4spring.datasource.password=○○○○○○ 5spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver 6 7#メタテーブルDDL実行制御 8spring.batch.initializer.enabled=false

問題となっているコマンドプロンプトからの実行方法は以下となります。
①Eclipse上で対象プロジェクトを右クリック→「実行」→「Maven clean」→「Maven install」
target配下に実行用TestBatch.jarが作成される。
②TestBatch.jarを[C:\test\kidou]に配置
③コマンドプロンプトで[C:\test\kidou]に移動し、
[java -jar TestBatch.jar org.springframework.batch.core.launch.support.CommandLineJobRunner BOOT-INF/classes/com/test/batch/TestBatch job]をたたく
コマンドは↓様を参考にさせていただきました。
http://javatechnology.net/spring/spring-batch-job-execute-jar/

発生している問題・エラーメッセージ

2018-11-25 20:53:45.507[main][INFO ][com.test.batch.BatchApplication] No active profile set, falling back to default profiles: default 2018-11-25 20:53:46.765[main][WARN ][org.springframework.context.annotation.AnnotationConfigApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testTableDao' defined in URL [jar:file:/C:/test/kidou/TestBatch.jar!/BOOT-INF/classes!/com/test/db/dao/TestTableDao.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: oracle.jdbc.driver.OracleDriver 2018-11-25 20:53:46.777[main][INFO ][org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener] Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2018-11-25 20:53:46.783[main][ERROR][org.springframework.boot.SpringApplication] Application run failed

oraclejdbcに関するエラーですが、
jar作成後にjarの中を見てみると
C:\test\kidou\TestBatch.jar\BOOT-INF\libにoraclejdbc以外の依存関係は入っていました。
oraclejdbcは含まれていなかったため、jarファイルと同ディレクトリにjdbcを配置し、
環境変数-システム環境変数のCLASSPATHにC:\test\kidou\ojdbc8.jarを指定しましたが、エラー内容は変わりませんでした。
Eclipse上では動作したため、oraclejdbcのパスの通し方や実行時のコマンドの指定に誤りがあるかと思います。
多くのサイトを拝見しましたが解決できずにいます。

コマンドでの実行で正常に動作できる方法を教えていただきたく思います。

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

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

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

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

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

rubytomato

2018/11/25 23:38

CLASSPATHを設定した後に、コマンドプロンプトを開きなおし、echo %CLASSPATH%で設定が反映されているか確認してください。それとOracle JDBCの依存関係をRuntimeではなくcompileにしてjarに含めてみるのはどうでしょうか?
momo1124

2018/11/26 15:16

回答ありがとうございます。返答が遅くなり済みません。 CLASSPATHは通っていました。 pomファイルに設定したOracle JDBCの依存関係はscopeがsystemになっていて、systemPathを指定していました。 <systemPath>${basedir}/lib/ojdbc8.jar</systemPath> 解決のヒントになりました。ありがとうございました。
guest

回答2

0

みなさんのご指摘を参考に解決しましたので、展開します。
①pomファイルのoracle jdbcの依存関係のscopeをsystemからcompileに修正
②①と同様にsystemPathも設定していたため削除
③libファイル内のoracle jdbcを参照していたためlibファイルを削除
④mvnコマンドでoracle jdbcをダウンロード
⑤コマンドjava -jar BatchJobを実行
→問題となっていたエラーは解決しました。
⑥jobではなく、メインのみ実行されたため、メインからjobを呼ぶロジックを作成

投稿2018/11/26 15:19

momo1124

総合スコア13

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

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

0

ベストアンサー

JDBCドライバが内包されない問題については、mavenのpom.xmlに含まれていないか、スコープがprovidedだからでしょう。

http://www.techscore.com/tech/Java/ApacheJakarta/Maven/3/

内包させたい場合は、mavenのローカルリポジトリに対象のjarファイルをインポートする方法があります。
手動でクラスパス設定をすると実行環境依存となるのであまり良い方法ではありません。

なお、実行可能jarファイルのクラスパスはMETA-INFのMANIFEST.MFに記載されますが、mavenで実行していればこれらを修正する必要はありません。

投稿2018/11/26 03:21

A-pZ

総合スコア12011

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

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

momo1124

2018/11/26 15:18

回答ありがとうございます。返答が遅くなり済みません。 pomファイルに設定したOracle JDBCの依存関係はscopeがsystemになっていて、systemPathを指定していました。 ご指摘していただいた点を参考に解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問