使用spring批处理获取执行列表

时间:2017-07-25 16:49:07

标签: java spring spring-batch spring-batch-admin

尝试运行spring批处理以加载执行列表时出现此错误。

  

java.lang.IllegalAccessError:尝试访问方法   org.springframework.batch.core.repository.dao.JdbcJobExecutionDao.getJobParameters(Ljava /郎/龙;)Lorg / springframework的/批次/型芯/ JobParameters;   来自课堂   org.springframework.batch.admin.service.JdbcSearchableJobExecutionDao

在做了一些分析之后,我发现JdbcJobExecutionDao是Spring-batch的一部分,并且将getJobParameters()的实现作为受保护的方法,而JdbcSearchableJobExecutionDao是spring-batch-admin的一部分,它扩展了JdbcJobExecutionDao。

因此,根据Oracle文档,它说IllegalAccessError是 -

  

如果应用程序试图访问或修改字段或者是,则抛出   调用一个它无权访问的方法。

     

通常,编译器会捕获此错误;这个错误只能   如果类的定义不兼容,则在运行时发生   改变。

我不明白,我无法控制这些罐子/类。我在使用它们时做错了吗?或者我在两个罐子中使用的版本是否有问题。

spring-batch - 版本2.2.0.RELEASE

spring-batch-admin - 版本1.3.0.BUILD-SNAPSHOT(也试过1.3.0.RELEASE)

指网站 - java.lang.IllegalAccessError: tried to access method

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java

https://github.com/spring-projects/spring-batch-admin/blob/master/spring-batch-admin-manager/src/main/java/org/springframework/batch/admin/service/JdbcSearchableJobExecutionDao.java

1 个答案:

答案 0 :(得分:0)

所以,我通过使用适当的版本来解决这个问题。这是春季批次和版本之间的版本不匹配问题。弹簧批次管理。我提到了这个春季文档网站,并尝试了推荐的版本,它的确有效!

http://docs.spring.io/spring-batch-admin/spring-batch-admin-manager/dependencies.html

所以,现在我正在使用

  

2.2.7.RELEASE(弹簧批次)

  

1.3.1.RELEASE(弹簧批次管理员)

我不再获得java.lang.IllegalAccessError了。需要检查是否有任何其他功能受到干扰,因为这是一个非常古老的项目。

希望这有助于遇到类似问题的人。