2016-03-11 24 views
6

Sono un principiante al Spring Batch. Sto seguendo questo guide per creare un HelloWorld di Spring Batch. Nella classe con il metodo principale quando stavo cercando di ottenere contesto di applicazione utilizzando new ClassPathXmlApplicationContext("..."), l'IDE mostra un messaggio di errore cheCome risolvere "Eccezione non gestita BeansException"

non gestita tipo di eccezione BeansException

non riesco a risolvere questo errore anche se ho un blocco catch che cattura tutti i tipi di eccezioni. Fare riferimento al blocco codice qui sotto:

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

Poi, ho provato a risolverlo import org.springframework.beans.BeansException; e cercato di prendere BeansException. Sebbene l'errore BeansException non gestito sia stato risolto ma è apparso un altro messaggio di errore:

Nessuna eccezione del tipo BeansException può essere generata; un tipo di eccezione deve essere una sottoclasse di throwable

Fare riferimento al blocco di codice di seguito:

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

Qual è il modo corretto per risolvere questo errore?

Nota aggiuntiva: Non ho una mia classe chiamata BeansException.

Edit: Stack trace (procedere opzione errore):

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

Controllo, hai qualcosa di simile a 'primavera-core-4.2.4.RELEASE .jar' nel tuo percorso di classe. Ovviamente, deve esserci la tua versione reale invece di '4.2.4'. –

+0

ho spring-batch-core-3.0.6.RELEASE.jar; primavera-batch infrastruttura 2.2.0.RELEASE.jar; primavera-context-4.2.4.RELEASE.jar; spring-fagioli-4.2.4.RELEASE.jar. Nota: posso importare solo org.springframework.beans.BeansException' dopo aver incluso spring-beans-4.2.4.RELEASE.jar – karansky

+0

ho bisogno di includere spring-core-4.2.4.RELEASE.jar? – karansky

risposta

8

grazie ai commenti di Ken Bekov alla domanda, sono stato in grado di risolvere questo problema e ho formulato questa soluzione per dare ufficialmente questa domanda una domanda. I crediti dovrebbero essere dati a Ken Bekov.

Soluzione: Il problema era dovuto alla diversa versione dei file .jar inclusa nel percorso di generazione. I file .jar che devono essere inclusi sono: spring-context-4.2.5.RELEASE.jar, spring-beans-4.2.5.RELEASE.jar e spring-core-4.2.5.RELEASE.jar (notare lo stesso numero di versione - 4.2.5).

Per quanto riguarda spring-batch-core-3.0.6.RELEASE.jar, spring-batch-infrastructure-3.0.6.RELEASE.jar e altri, non è necessario che abbiano necessariamente lo stesso numero di versione (4.2.5).

Dopo che i file .jar corretti sono stati inclusi, ci saranno anche non essere un messaggio di errore "non gestita tipo di eccezione BeansException" per new ClassPathXmlApplicationContext("...");

0
  1. eliminare i file esistenti vasetti formano .m2 \ repository \ org \ cartella Spring Framework .
  2. do generazione pulita utilizzando stessa versione della primavera-context.jar, la primavera-beans.jar e la primavera-core.jar
Problemi correlati