我们有多个工作都使用类似的模式。
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
答案 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以清除它。