spring-batch - 如何在没有 java 配置而不是 XML 的情况下使用 CommandLineJobRunner 启动 Spring 批处理
问题描述
我在 java 配置文件中有一个作业定义。当我尝试从 gradle 任务运行作业时,我得到 IOException parsing XML Document from class path。如何在没有 XML 配置的情况下使用 CommandLineJobRunner 运行作业?
摇篮
task executeJob(type: JavaExec) {
main = 'org.springframework.batch.core.launch.support.CommandLineJobRunner'
classpath = sourceSets.test.runtimeClasspath
args = ["--job_path", "C:\\dev\\git\\ncf-bulk-order\\src\\main\\java\\com\\shelter\\NCFBulkOrder\\Jobs\\NCFBulkOrderConfig.java",
"--job_id", "Response",
"--next",
"--customParam", "value"]
}
堆栈跟踪
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [--job_path]; nested exception is java.io.FileNotFoundException: class path resource [--job_path] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:290)
at org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:565)
Caused by: java.io.FileNotFoundException: class path resource [--job_path] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)
... 14 common frames omitted
解决方案
CommandLineJobRunner
需要 XML 文件或 Java 配置类,其中包含定义您的作业的 Spring 应用程序上下文。这是一个带有 Java 配置类的示例:
java -cp your/class/path \
org.springframework.batch.core.launch.support.CommandLineJobRunner \
com.example.MyJobConfiguration \
myJob
所以在你的命令中,你不需要传递--job_path
标志。
推荐阅读
- php - 调用未定义的方法 stdClass::isEmpty() 错误
- python - Python - 如何将两列中的值计算到每行中自己的列中?
- python - 冷却消息不适用于 discord.py
- android-jetpack-compose - mutableStateOf 值更改后不会触发 Recompose
- javascript - 如何使隐藏的显示再次出现
- c# - PreviewMouseLeftButtonDown 事件偶尔会在触摸控件外部时触发
- javascript - 每当我编译我的应用程序时,都会抛出一个反应错误,显示“TypeError:无法读取未定义的属性(读取'endOf')”
- java - 如何在 Java 中为 Web 套接字客户端(Jetty)设置最大缓冲区大小
- c - 为数组赋值:数组表达式必须是可修改的左值
- python - 错误: ffprobe/avprobe 和 ffmpeg/avconv 未找到。请安装一个