2016-04-19 14 views
0

Es gibt ein seltsames Problem ist, wenn die Berichterstellung unter Verwendung von Scheduler QUARTZERROR org.quartz.core.JobRunShell - warf Job group1.JobReport eine nicht behandelte Ausnahme

mir einen Bericht in Ordnung erzeugen kann! kein Problem.

das Verfahren (reportsBean) funktioniert in der Regel, aber es gibt ein Problem, wenn durch Quarz vorbei

Jede Idee, bitte ?? Ich weiß nicht mehr, was ich tun:/

13449 [MyScheduler_Worker-1] ERROR org.quartz.core.JobRunShell - Job group1.JobReport warf eine nicht behandelte Ausnahme: java.lang.NullPointerException bei com.changes.bean.ReportsBean.createPdfCriticalChanges (ReportsBean.java:104) bei com.changes.quarz.JobReport.execute (JobReport.java:36) um org.quarz.core.JobRunShell.run (JobRunShell.java: 202) um org.quartz.simpl.SimpleThreadPool $ WorkerThread.run (SimpleThreadPool.java:573) 13452 [MyScheduler_Worker-1] FEHLER org.quartz.core.ErrorLogger - Job (group1.JobReport warf eine Ausnahme . org.quartz.SchedulerException: Job hat eine unbehandelte Ausnahme ausgelöst. [Siehe geschachtelte Ausnahme: java.lang.NullPointerException] unter org.quarz.core.JobRunShell.run (JobRunShell.java:213) um org.quartz.simpl.SimpleThreadPool $ WorkerThread.run (SimpleThreadPool.java:573) verursacht durch: java.lang.NullPointerException bei com.changes.bean.ReportsBean.createPdfCriticalChanges (ReportsBean.java:104) bei com.changes.quartz.JobReport.execute (JobReport.java:36) bei org.quartz .core.JobRunShell.run (JobRunShell.java:202)

reportsbean

public class JobReport implements Job { 


    public void execute(JobExecutionContext context) throws JobExecutionException { 


     //BasicConfigurator.configure(); 
     try { 
      ReportsBean reportsBean = new ReportsBean(); 
      reportsBean.createPdfCriticalChanges(); 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy – hh:mm:ss"); 
      System.out.println("Rodou: " + dateFormat.format(new Date())); 
     } catch (JRException | SQLException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

quartz.properties

org.quartz.scheduler.instanceName = MyScheduler 
org.quartz.threadPool.threadCount = 3 
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin 
org.quartz.plugin.jobInitializer.fileNames = com/changes/quartz/quartz-config.xml 
org.quartz.plugin.jobInitializer.failOnFileNotFound = true 

web.xml

<!-- Inicio Quartz --> 
<servlet> 
    <servlet-name>QuartzServlet</servlet-name> 
    <servlet-class>com.changes.quartz.servlet.QuartzServlet</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>QuartzInitializer</servlet-name> 
    <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> 
    <init-param> 
     <param-name>config-file</param-name> 
     <param-value>quartz.properties</param-value> 
    </init-param> 
    <init-param> 
     <param-name>shutdown-on-unload</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>start-scheduler-on-load</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<!-- Fim Quartz --> 

Antwort

0

Das Problem ist, dass Sie eine Nullpointer in Ihrem ReportsBean haben.

Da die Signatur der Methode Quarz auszuführen ist

public void execute(JobExecutionContext context) throws JobExecutionException 

Quarz kann nur mit JobExecutionException die beschäftigen, die innerhalb dieser Methode geworfen werden. Aber in Ihrem Fall wird eine unerwartete NullPointerException ausgelöst.

Um dieses Problem zu lösen, sollten Sie die Ursache des NullPointer entfernen. Aus dem obigen Quellcode konnte ich die Ursache dieser Ausnahme nicht herausfinden, da sie in Ihrem ReportsBean auftritt.

Sicher versucht Ihre Methode ReportsBean.createPdfCriticalChanges Zugriff auf ein nicht initialisiertes Mitglied.

+0

wie könnte ich ein Mitglied versuchen initialisieren, bitte? Danke – rafa120

+0

Sie initialisieren ein Mitglied, wenn Sie ihm einen Wert zuweisen. Zum Beispiel Integer myInt = 10; Bitte schauen Sie sich die Zeile 104 Ihrer ReportsBean an, da in dieser Zeile auf eine Variable mit dem Wert null zugegriffen wird. Wenn Sie das Problem nicht lösen konnten, sollten Sie den Quellcode von ReportsBean angeben. – mam10eks

0

an der Linie 104: String report FacesContext.getCurrentInstance().getExternalContext().getRealPath("/web/reports/criticalcr.jrxml");

Denken Sie daran: es ist aus Quarz arbeiten.

ReportsBean

public void createPdfCriticalChanges() throws JRException,SQLException { 
      System.out.println("generating report..."); 

      String report = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/web/reports/criticalcr.jrxml"); 
      JasperReport pathjrxml = JasperCompileManager.compileReport(report); 
      //JasperReport pathjrxml = JasperCompileManager.compileReport("web/reports/criticalcr.jrxml"); //Funciona com o inicia Agenda em XML "web/reports/changetracker_criticalcr.jrxml" 
      JasperPrint printReport = JasperFillManager.fillReport(pathjrxml, null, conn.getConn()); 
      JasperExportManager.exportReportToPdfFile(printReport, "/web/reports/changetracker_criticalcr.pdf"); //Funciona com o inicia Agenda em XML "web/reports/criticalcr.pdf" 
      System.out.println("report generated!"); 
    } 
Verwandte Themen