未找到@Component定义的Spring Batch Listener

时间:2013-04-16 14:14:03

标签: spring spring-batch

我们有多个工作都使用类似的模式。

MyJobListener的类文件是使用@Component注释定义的。

XML中的监听器已定义:

<batch:listeners>
   <batch:listener ref="myJobListener" />
</batch:listeners>

在某些情况下似乎工作正常,但对其他情况则不然。在某些情况下,我们收到错误:

ERROR (CommandLineJobRunner.java:355) - Job Terminated in error: Failed to load bean class: mypackage.myJobListener; nested exception is java.io.FileNotFoundException: class path resource [mypackage/myJobListener.class] cannot be opened because it does not exist

不确定为什么会这样做(作业都以相同的方式编码)。

更新

这似乎是一个环境问题。 Spring Batch作业在一个环境中运行得非常好,但我们正在更新到新服务器。在新服务器上,我们的所有作业都收到错误(FileNotFoundException)。

请告诉我可能需要的其他信息。

OLD SERVER


java版本&#34; 1.6.0_43&#34;

Java(TM)SE运行时环境(版本1.6.0_43-b01)

Java HotSpot(TM)服务器VM(版本20.14-b01,混合模式)

机器硬件:sun4u

SunOS版本:5.10

处理器类型:sparc

硬件:SUNW,Sun-Fire-480R

新服务器


java版本&#34; 1.6.0_43&#34;

Java(TM)SE运行时环境(版本1.6.0_43-b01)

Java HotSpot(TM)服务器VM(版本20.14-b01,混合模式)

机器硬件:sun4v

SunOS版本:5.10

处理器类型:sparc

硬件:sparc SUNW,T5240

2 个答案:

答案 0 :(得分:0)

由于你没有发布你的配置......

确保按照以下方式定义您的课程:

@Component("myJobListener")
public class MyJobListener implements JobExecutionListener{

并确保在ApplicationContext.xml

中的某处有类似的内容
<context:component-scan base-package="mypackage" />

加载带注释的bean(你的听众)

答案 1 :(得分:0)

我没有来到这里并通知所有人该决议。

看起来这个问题与损坏的jar文件有关。

我们在所有项目jar文件上运行jar -tf。对于其中一个jar文件,它收到了一个错误:

java.util.zip.ZipException: invalid END header (bad central directory offset)

重新部署jar文件似乎可以解决这个问题。

不确定jar文件出现问题的原因。我们使用ANT来构建jar文件,然后将它们组合成一个tar文件进行部署。我们将tar文件SFTP到unix服务器,然后解压缩它。出于某种原因,jar文件有时会出现问题,但重新部署seemes以清除它。