Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决;未处理的异常类型BeansException“;_Java_Spring_Spring Batch - Fatal编程技术网

Java 如何解决;未处理的异常类型BeansException“;

Java 如何解决;未处理的异常类型BeansException“;,java,spring,spring-batch,Java,Spring,Spring Batch,我是春季批的初学者。我遵循这一点来创建Spring批处理的HelloWorld。当我试图使用newclasspathXMLApplicationContext(“…”)获取应用程序上下文时,在带有main方法的类中,IDE显示一条错误消息 未处理的异常类型BeansException 即使我有一个捕获所有类型异常的catch块,我也无法解决该错误。请参阅下面的代码块: public static void main(String args[]) { try {

我是春季批的初学者。我遵循这一点来创建Spring批处理的HelloWorld。当我试图使用
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,但仍然出现相同的错误