

はじめまして。  
当方、.Net系の経験はありますがJavaはあまり経験ないので、色々Java界の常識をすっ飛ばしていることがあるかもしれません。遠慮なくご指摘ください。。

Windows環境のSTSでバッチを作り、実行可能JARとしてMaven Installで作成したJARでLinuxサーバ(CentOS
7)上で実行したところ、実行時エラーが発生しました。（以下Log4jエラーログ抜粋）  
※BBBB01はプログラム名です。  
メッセージでStackOverflowなどの海外サイトともかなり格闘しましたが有力な情報にはあたらず。  
設定もいろいろ試してみましたが、改善しませんでした。

このエラーの原因が何で、解消方法はどうなりますでしょうか？  
ターゲットバージョンは1.8です。

[code]

    YYYY-MM-DD 13:49:33,413 ERROR CommandLineJobRunner - Job Terminated in error: Error creating bean with name 'BBBB01Configuration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.batch.core.repository.JobRepository com.batch.XXXXXXX.BBBB01Configuration.jobRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobRepository': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${batch.jdbc.driver}'
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BBBB01Configuration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.batch.core.repository.JobRepository com.batch.XXXXXX.BBBB01Configuration.jobRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobRepository': Invocation of init method failed; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${batch.jdbc.driver}'
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    
[/code]

＝＝＝＝  
プロパティファイルをautowireする前後でエラーが発生しているようにみえるので、関連しそうな情報です。

●プロパティファイルは2つあり、いずれもsrc/main/resourcesにおいてあります。  
(1)batch.properties  
(2)log4j.properties

実行環境にはjarを配置したディレクトリに(1)(2)を個別配置済。

(1)にはHSQLDBの一般的な設定↓の他、プログラム固有の設定をいくつか追加しています。

[code]

    # Placeholders batch.*
    #    for HSQLDB:
    batch.jdbc.driver=org.hsqldb.jdbcDriver
    batch.jdbc.url=jdbc:hsqldb:mem:testdb;sql.enforce_strict_size=true
    # use this one for a separate server process so you can inspect the results
    # (or add it to system properties with -D to override at run time).
    # batch.jdbc.url=jdbc:hsqldb:hsql://localhost:9005/samples
    batch.jdbc.user=sa
    batch.jdbc.password=
    batch.schema=
    batch.schema.script=classpath:/org/springframework/batch/core/schema-hsqldb.sql
    
[/code]

●launch-context.xmlは、beans配下に以下の定義。

[code]

    <context:property-placeholder order="1" location="classpath:batch.properties" />
    <context:property-placeholder order="2" location="classpath:log4j.properties" />
    <context:annotation-config/>
    
    <context:component-scan base-package="com.batch.XXXXXX" />
    <jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="${batch.schema.script}" />
    </jdbc:initialize-database>
    
    <batch:job-repository id="jobRepository" />
    
    <import resource="classpath:/META-INF/spring/module-context.xml" />
    
[/code]

●Maven（maven-shade-plugin）で生成されるマニフェストファイル。

[code]

    Manifest-Version: 1.0
    Package: com.batch.XXXXXX
    Build-Number: 1
    Archiver-Version: Plexus Archiver
    Built-By: xxxxxxxxx
    Class-Path: ./
    Created-By: Apache Maven 3.3.9
    Build-Jdk: 1.8.0_102
    Main-Class: org.springframework.batch.core.launch.support.CommandLineJ
     obRunner
    
[/code]

※なぜか改行が入っていますが、これが原因ではなさそうでした。

●POMの抜粋  
■properties

[code]

    <properties>
        <maven.test.failure.ignore>true</maven.test.failure.ignore>
        <spring.framework.version>3.0.6.RELEASE</spring.framework.version>
        <spring.batch.version>2.1.7.RELEASE</spring.batch.version>
        <configFileBatch>batch.properties</configFileBatch>
        <configFilelog4j>log4j.properties</configFilelog4j>
    </properties>
    
[/code]

■build

[code]

    <build>      
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin> 
    
    
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <index>false</index>
                    <manifest>
                        <packageName>com.batch.xxxxxx</packageName>
                        <mainClass>org.springframework.batch.core.launch.support.CommandLineJobRunner</mainClass>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <configuration>
                <finalName>BBBB01</finalName>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Main-Class>org.springframework.batch.core.launch.support.CommandLineJobRunner</Main-Class>
                            <Class-Path>./</Class-Path>
                            <Build-Number>1</Build-Number>
                        </manifestEntries>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                        <resource>.properties</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                </transformers>
                <archive>
                  <manifestEntries>
                    <Class-Path>./</Class-Path>
                  </manifestEntries>
                </archive>
              </configuration>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    
    </plugins>
    
[/code]

以上


CC BY-SA 3.0
2016-11-10T05:55:06.413
30300
2017-09-06T03:25:22.457
19511
question
spring java8
STSで作成した実行可能JARで、auto-wireに関するエラーが発生する


`Cannot load JDBC driver class '${batch.jdbc.driver}'`  
と出力されています。  
プロパティファイルに`batch.jdbc.driver`は定義されているようですが、読み込む側はどのような設定になっているのでしょうか？  
`${batch.jdbc.driver}`を記述しているXMLファイルがプロパティファイルを読めていないのでは？


CC BY-SA 3.0
2017-03-01T07:16:04.133
33008
2017-03-01T07:16:04.133
20758
30300
answer