サーバーでバッチジョブを実行する際に問題が発生しましたが、開発ワークステーションのEclipseからは正常に実行されます。
Rooを使用してSpring環境をセットアップし、エンティティを作成し、いくつかの作業を行うバッチを作成して、開発済みボックスで十分にテストしました。コンテキストを初期化して作業を行いますが、サーバーでバッチを実行すると、コンテキストが正しく初期化されません。コードは次のとおりです。
public class TestBatch {
private static ApplicationContext context;
@SuppressWarnings("unchecked")
public static void main(final String[] args) {
context = new ClassPathXmlApplicationContext("/META-INF/spring/applicationContext.xml");
try {
@SuppressWarnings("unused")
TestBatch app = new TestBatch();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void TestBatch() { /** Do Something using the context **/ }
}
そして、ここにログと例外があります:
2010-02-16 11:54:16,072 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6037fb1e: startup date [Tue Feb 16 11:54:16 CET 2010]; root of context hierarchy
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:127)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at tld.mydomain.myproject.batch.TestBatch.main(TestBatch.java:51)
Caused by: java.lang.NullPointerException
at org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>(DefaultListableBeanFactory.java:103)
... 7 more
何が起こっているのかについてのアイデアやヒントはありますか?クラスパスは$PROJECTHOME/ target / classesに設定されており、すべての依存関係は$ PROJECTHOME / target / libにあり、「export CLASSPATH = $ PROJECTHOME / target / classes; java -Djava.endorsed.dirs =$PROJECTHOME」を使用して実行します。 / target / lib tld.mydomain.myproject.batch.TestBatch "
私のセットアップに非常に間違っているように見えるものはありますか?これをEclipseから実行すると問題はありませんが、実行したいサーバーにデプロイして上記のように実行すると、この問題が発生します。Eclipseから実行されるため、構成ファイルは大丈夫だと思いますが、これを引き起こしている原因をデバッグするにはどうすればよいですか?おそらく、サーバーと開発ワークステーションの間にいくつかの構成エラーまたは不一致がありますか?または、これはファイルが見つからないという本当に奇妙な言い方ですか?もしそうなら、どうすれば正しいファイルが見つかることを確認できますか?
この問題に取り組む方法についてのあなたの提案を聞くのを本当に楽しみにしています。
乾杯
ニック