Java 如何解决;未处理的异常类型BeansException“;
我是春季批的初学者。我遵循这一点来创建Spring批处理的HelloWorld。当我试图使用Java 如何解决;未处理的异常类型BeansException“;,java,spring,spring-batch,Java,Spring,Spring Batch,我是春季批的初学者。我遵循这一点来创建Spring批处理的HelloWorld。当我试图使用newclasspathXMLApplicationContext(“…”)获取应用程序上下文时,在带有main方法的类中,IDE显示一条错误消息 未处理的异常类型BeansException 即使我有一个捕获所有类型异常的catch块,我也无法解决该错误。请参阅下面的代码块: public static void main(String args[]) { try {
newclasspathXMLApplicationContext(“…”
)获取应用程序上下文时,在带有main方法的类中,IDE显示一条错误消息
未处理的异常类型BeansException
即使我有一个捕获所有类型异常的catch块,我也无法解决该错误。请参阅下面的代码块:
public static void main(String args[]) {
try {
//error message appears here
AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext("simpleJob.xml");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("Date", "12/02/2011");
jobLauncher.run(job, builder.toJobParameters());
JobExecution jobExecution = jobRepository.getLastJobExecution(job.getName(), builder.toJobParameters());
System.out.println(jobExecution.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext("simpleJob.xml");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("Date", "12/02/2011");
jobLauncher.run(job, builder.toJobParameters());
JobExecution jobExecution = jobRepository.getLastJobExecution(job.getName(), builder.toJobParameters());
System.out.println(jobExecution.toString());
}
//error message appears here
catch(BeansException e) {
//do something
}
catch(Exception e) {
e.printStackTrace();
}
}
然后,我尝试通过import org.springframework.beans.BeansException来解决这个问题
并试图捕获BeansException
。虽然解决了未处理的BeansException错误,但出现了另一条错误消息:
不能抛出BeansException类型的异常;异常类型
必须是throwable的子类
请参阅下面的代码块:
public static void main(String args[]) {
try {
//error message appears here
AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext("simpleJob.xml");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("Date", "12/02/2011");
jobLauncher.run(job, builder.toJobParameters());
JobExecution jobExecution = jobRepository.getLastJobExecution(job.getName(), builder.toJobParameters());
System.out.println(jobExecution.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext("simpleJob.xml");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("Date", "12/02/2011");
jobLauncher.run(job, builder.toJobParameters());
JobExecution jobExecution = jobRepository.getLastJobExecution(job.getName(), builder.toJobParameters());
System.out.println(jobExecution.toString());
}
//error message appears here
catch(BeansException e) {
//do something
}
catch(Exception e) {
e.printStackTrace();
}
}
解决此错误的正确方法是什么
附加说明:我没有自己的名为BeansException的类
编辑:堆栈跟踪(继续执行错误选项):
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No exception of type BeansException can be thrown; an exception type must be a subclass of Throwable
at SpringBatchHelloWorld.BatchLauncher.main(BatchLauncher.java:29)
多亏了肯·贝科夫对这个问题的评论,我才能够解决这个问题,我制定了这个解决方案来正式回答这个问题。应将学分授予肯·贝科夫 解决方案: 问题是由于生成路径中包含不同版本的.jar文件。应该包括的.jar文件有:
spring-context-4.2.5.RELEASE.jar
,spring-beans-4.2.5.RELEASE.jar
和spring-core-4.2.5.RELEASE.jar
(注意相同的版本号-4.2.5)
至于spring-batch-core-3.0.6.RELEASE.jar
、spring-batch-infrastructure-3.0.6.RELEASE.jar
等,它们不一定需要有相同的版本号(4.2.5)
在包含正确的.jar文件之后,new ClassPathXmlApplicationContext(“…”)甚至不会出现“未处理的异常类型BeansException”错误消息代码>
从.m2\repository\org\springframework文件夹中删除现有jars文件
使用相同版本的spring-context.jar、spring-beans.jar和spring-core.jar进行干净构建
检查,您的类路径中是否有类似于spring-core-4.2.4.RELEASE.jar的内容。当然,必须有您的真实版本,而不是4.2.4
;spring-batch-infrastructure-2.2.0.RELEASE.jar;spring-context-4.2.4.RELEASE.jar;spring-beans-4.2.4.RELEASE.jar。注意:在我包含spring-beans-4.2.4.RELEASE.jar之后,我只能导入org.springframework.beans.BeansException
?我是否需要包含spring-core-4.2.4.RELEASE.jar?是的,所有spring jar都应该有相同的版本。因此,如果您有4.2.4.RELEASE
的spring context
,spring-core
也应该是4.2.4.RELEASE
。spring-batch-core的最新版本是3.0.6,因此我将所有jar更改为3.0.6,但仍然出现相同的错误