如何解决"Unhandled exception type BeansException"

How to solve "Unhandled exception type BeansException"

我是 Spring Batch 的初学者。我正在按照此 guide 创建一个 Spring 批次的 HelloWorld。在 class with main 方法中,当我尝试使用 new ClassPathXmlApplicationContext("...") 获取应用程序上下文时,IDE 显示错误消息

Unhandled exception type 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();
        } 
    }

然后,我试图通过import org.springframework.beans.BeansException;解决它并试图抓住BeansException。虽然解决了 unhandled BeansException 错误,但是又出现了一条错误信息:

No exception of type BeansException can be thrown; an exception type must be a subclass of throwable

参考下面的代码块:

    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();
        } 
    }

解决这个错误的正确方法是什么?

补充说明:我没有自己的 class 命名的 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)

感谢 Ken Bekov 对问题的评论,我得以解决这个问题,我制定了这个解决方案来正式回答这个问题。致谢 Ken Bekov。

解法: 问题是由于构建路径中包含不同版本的 .jar 文件。应包括的 .jar 文件是:spring-context-4.2.5.RELEASE.jarspring-beans-4.2.5.RELEASE.jarspring-core-4.2.5.RELEASE.jar(注意相同的版本号 - 4.2.5)。

至于spring-batch-core-3.0.6.RELEASE.jarspring-batch-infrastructure-3.0.6.RELEASE.jar等,版本号不一定相同(4.2.5)。

包含正确的 .jar 文件后,new ClassPathXmlApplicationContext("...");

甚至不会出现 "Unhandled exception type BeansException" 错误消息
  1. 从 .m2\repository\org\springframework 文件夹中删除现有的 jars 文件。
  2. 使用相同版本的 spring-context.jar、spring-beans.jar 和 spring-core.jar[= 进行清理构建13=]