尝试运行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)
答案 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
了。需要检查是否有任何其他功能受到干扰,因为这是一个非常古老的项目。
希望这有助于遇到类似问题的人。