2016-03-11 34 views
6

Tôi là người mới bắt đầu tại Spring Batch. Tôi đang theo dõi số guide này để tạo HelloWorld cho Spring Batch. Trong lớp học với phương pháp chính khi tôi đã cố gắng để có được Application Context bằng cách sử dụng new ClassPathXmlApplicationContext("..."), IDE cho thấy một thông báo lỗi nóiCách giải quyết "Loại trừ ngoại lệ BeansException"

Unhandled loại ngoại lệ BeansException

Tôi không thể giải quyết rằng lỗi mặc dù tôi có một khối catch bắt tất cả các loại ngoại lệ. Hãy tham khảo các khối mã bên dưới:

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

Sau đó, tôi đã cố gắng để giải quyết nó bằng cách import org.springframework.beans.BeansException; và cố gắng để bắt BeansException. Mặc dù lỗi BeansException không được giải quyết đã được giải quyết nhưng một thông báo lỗi khác xuất hiện:

Không ngoại lệ loại BeansException có thể bị ném; một loại ngoại lệ phải là một lớp con của Throwable

Tham khảo các khối mã bên dưới:

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

cách chính xác để giải quyết lỗi này là gì?

Lưu ý bổ sung: Tôi không có lớp riêng của tôi có tên là BeansException.

Edit: Stack trace (tiến hành lựa chọn lỗi):

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) 
+0

Kiểm tra, làm bạn có một cái gì đó như 'mùa xuân-core-4.2.4.RELEASE .jar' trong đường dẫn lớp học của bạn. Tất nhiên, có phải là phiên bản thực của bạn thay vì '4.2.4'. –

+0

tôi có spring-batch-core-3.0.6.RELEASE.jar; spring-batch-infrastructure-2.2.0.RELEASE.jar; spring-context-4.2.4.RELEASE.jar; spring-beans-4.2.4.RELEASE.jar. Lưu ý: Tôi chỉ có thể nhập 'org.springframework.beans.BeansException' sau khi tôi đã bao gồm spring-beans-4.2.4.RELEASE.jar – karansky

+0

tôi có cần include spring-core-4.2.4.RELEASE.jar không? – karansky

Trả lời

8

Nhờ comments Ken Bekov của câu hỏi, tôi đã có thể giải quyết vấn đề này và tôi xây dựng giải pháp này để chính thức đưa ra câu hỏi này một câu trả lời. Tín dụng nên được trao cho Ken Bekov.

Giải pháp: Vấn đề là do phiên bản khác nhau của tệp .jar được bao gồm trong đường dẫn xây dựng. Các tệp .jar cần được bao gồm là: spring-context-4.2.5.RELEASE.jar, spring-beans-4.2.5.RELEASE.jarspring-core-4.2.5.RELEASE.jar (thông báo cùng số phiên bản - 4.2.5).

Đối với spring-batch-core-3.0.6.RELEASE.jar, spring-batch-infrastructure-3.0.6.RELEASE.jar và các loại khác, chúng không nhất thiết phải có cùng số phiên bản (4.2.5).

Sau khi các file .jar đúng được thu nhận, sẽ không còn là một "Unhandled loại ngoại lệ BeansException" thông báo lỗi cho new ClassPathXmlApplicationContext("...");

0
  1. xóa hiện lọ file hình .m2 \ kho \ org \ thư mục Spring Framework .
  2. làm sạch sẽ xây dựng bằng cách sử dụng cùng một phiên bản của mùa xuân-context.jar, mùa xuân-beans.jar và mùa xuân-core.jar
Các vấn đề liên quan