首页 > 解决方案 > 当我尝试实例化 JobOperator 时,抛出了 ClassNotFoundException。(org.apache.commons.dbcp2.BasicDataSource)

问题描述

我从一个基本的 Spring Batch 入门示例开始。我只添加了一条指令来停止工作,但我在运行时遇到异常。

https://github.com/brunogcarneiro/spring-batch-error/blob/main/src/main/java/com/example/batchprocessing/JobCompletionNotificationListener.java

@Override
public void beforeJob(JobExecution jobExecution){
    log.info("Job starting!");
    BatchRuntime.getJobOperator().stop(jobExecution.getId());
    log.info("Job stoped!");
}

当我调用getJobOperato() 时抛出异常。一旦我使用spring-boot-starter-batch,我就无法弄清楚为什么会发生这种情况。

完整的源代码可以在以下位置找到:https ://github.com/brunogcarneiro/spring-batch-error

堆栈跟踪是:

2021-01-14 15:09:01.963 错误 126675 --- [main] osbatch.core.job.AbstractJob >:执行作业时遇到致命错误

2.RELEASE.jar:2.2.2.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE] at com.example.batchprocessing.BatchProcessingApplication.main(BatchProcessingApplication.java :10)〜[main /:na]引起:org.springframework.beans.factory.BeanCreationException:创建名为'jobRepository'的bean时出错:设置bean属性'dataSource'时无法解析对bean'dataSource'的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.2.RELEASE .jar:5.2.2.RELEASE] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置bean属性“dataSource”时无法解析对bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource ClassNotFoundException:org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference 的 org.apache.commons.dbcp2.BasicDataSource(BeanDefinitionValueResolver.java:342)~[spring-beans-5.2.2.RELEASE.jar:5.2.2。 RELEASE] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置bean属性“dataSource”时无法解析对bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource ClassNotFoundException:org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference 的 org.apache.commons.dbcp2.BasicDataSource(BeanDefinitionValueResolver.java:342)~[spring-beans-5.2.2.RELEASE.jar:5.2.2。 RELEASE] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置bean属性“dataSource”时无法解析对bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource BasicDataSource at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 引起:org.springframework.beans .factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置bean属性“dataSource”时无法解析对bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource BasicDataSource at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 引起:org.springframework.beans .factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置bean属性“dataSource”时无法解析对bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置 bean 属性“dataSource”时无法解析对 bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource resolveReference(BeanDefinitionValueResolver.java:342) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“jobRepository”的bean时出错:设置 bean 属性“dataSource”时无法解析对 bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource 设置 bean 属性“dataSource”时无法解析对 bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource 设置 bean 属性“dataSource”时无法解析对 bean“dataSource”的引用;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource

factory.CannotLoadBeanClassException:找不到类路径资源 [jsrBaseContext.xml] 中定义的名称为“dataSource”的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource 原因:org.springframework.beans.factory.CannotLoadBeanClassException: 找不到名为 ' 的 bean 的类 [org.apache.commons.dbcp2.BasicDataSource] dataSource' 在类路径资源 [jsrBaseContext.xml] 中定义;嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource commons.dbcp2.BasicDataSource 原因:org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源[jsrBaseContext.xml]中定义的名称为“dataSource”的bean的类[org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource commons.dbcp2.BasicDataSource 原因:org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源[jsrBaseContext.xml]中定义的名称为“dataSource”的bean的类[org.apache.commons.dbcp2.BasicDataSource];嵌套异常是 java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource

在 org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1476) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 在 org.springframework.beans.factory。 support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:489) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:323) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring -beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.2.RELEASE. jar:5.2.2.RELEASE] 在 org.springframework。beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] at >org.springframework.beans.factory.support.BeanDefinitionValueResolver。 resolveReference(BeanDefinitionValueResolver.java:330) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] ...省略了 54 个常见框架 原因:java.lang.ClassNotFoundException: org.apache.commons。 dbcp2.BasicDataSource at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] 原因:java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource330)〜[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] ...省略了54个常见框架原因:java.lang.ClassNotFoundException:org.apache.commons.dbcp2.BasicDataSource at java。 base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] 原因:java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource330)〜[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] ...省略了54个常见框架原因:java.lang.ClassNotFoundException:org.apache.commons.dbcp2.BasicDataSource at java。 base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] 原因:java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource

在 >java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~>[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na] at java.base/java.lang.Class.forName0(Native Method) ~[na:na] at java.base/java.lang.Class.forName(Class.java:398) ~[na :na] 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:277) ~[spring-core-5.2.2.RELEASE.jar:5.2.2.RELEASE] 在 org.springframework.beans.factory.support .AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:456) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java: 1541)〜[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory。java:1468) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE] ...省略了60个常用框架

2021-01-14 15:09:02.013 INFO 126675 --- [main] osbclsupport.SimpleJobLauncher:作业:[FlowJob:[name=importUserJob]] 使用以下参数完成:[{run.id=1}] 和以下状态: [FAILED] in 9s845ms 2021-01-14 15:09:02.016 INFO 126675 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - 关闭启动... 2021-01-14 15: 09:02.019 信息 126675 --- [主] com.zaxxer.hikari.HikariDataSource >:HikariPool-1 - 关闭完成。

标签: javaspring-batch

解决方案


请在您的 build.gradle 中添加以下内容,它将通过。

compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.8.0'

推荐阅读