0

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

类文件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)。

请让我知道可能需要哪些其他信息。

旧服务器


java版本“1.6.0_43”

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

Java HotSpot(TM) 服务器虚拟机(build 20.14-b01,混合模式)

机器硬件:sun4u

SunOS 版本:5.10

处理器类型:sparc

硬件:SUNW,Sun-Fire-480R

新服务器


java版本“1.6.0_43”

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

Java HotSpot(TM) 服务器虚拟机(build 20.14-b01,混合模式)

机器硬件:sun4v

SunOS 版本:5.10

处理器类型:sparc

硬件:sparc SUNW,T5240

4

2 回答 2

0

由于您没有发布配置...

确保你像这样定义你的类:

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

并确保在 ApplicationContext.xml 中的某处有类似的东西

<context:component-scan base-package="mypackage" />

加载带注释的 bean(您的侦听器)

于 2013-04-16T14:58:37.507 回答
0

我没有出来告诉大家这个决议。

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

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

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

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

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

于 2013-06-25T14:47:52.597 回答