Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    [Disperazione indescrivibile] Applicazione Java, se in remoto, non apre il report

    Carissimi,
    la mia web app contiene alcuni Jasper Report che in locale si aprono correttamente. In remoto, risolto un problema relativo al path dei files jasper, vedo ora questo nuovo errore per il quale sono davvero in alto mare. Poiché ci lavoro da due giorni ininterreottamente e nessun collega "fisico" è riuscito a darmi dritte, se mi aiuterete a risolvere il problema ve ne sarò eternamente grato. Ringrazio in anticipo chiunque dovesse usare il suo tempo nel tentativo di aiutarmi, a prescindere dall'esito più o meno risolutivo.

    Archimede

    SERVLET CHE APRE IL REPORT
    codice:
    package servletReport;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    
    import dao.DAOMain;
    
    /**
     * Servlet implementation class for Servlet: ServletReportStreamPDF
     *
     */
     public class ServletReportStreamPDF extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
       static final long serialVersionUID = 1L;
       
        /* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#HttpServlet()
    	 */
    	public ServletReportStreamPDF() {
    		super();
    	}   	
    	
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		String rptFileName = request.getParameter("rptFileName").toString();
    		String rptFolder = "/report/"; 
    		JasperPrint jp = null;
    		ServletContext context = this.getServletContext();
    		
    		Map parameters = new HashMap();
    		parameters.put("alfa", context.getRealPath("/media/images/eg.jpg"));
    		parameters.put("sel2", "null");
    		parameters.put("logo", context.getRealPath("/media/images/eg.jpg"));
    		
    		Connection Conn = null; 
    		DAOMain rptDAO = new DAOMain();
    		
    		try {
    			Conn = rptDAO.myCn();
    		} catch (InstantiationException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (IllegalAccessException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (ClassNotFoundException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		
    		try {
    			jp = JasperFillManager.fillReport(context.getResourceAsStream(rptFolder + rptFileName + ".jasper"), parameters, Conn);
    		} catch (JRException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		ServletOutputStream outStream = response.getOutputStream();
    		
    		try {
    			JasperExportManager.exportReportToPdfStream(jp, outStream);
    		} catch (JRException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}  	
    	
    	/* (non-Java-doc)
    	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request,response);
    	}   	  	    
    }
    ERRORE GENERATO
    codice:
    java.lang.NoClassDefFoundError
    	java.lang.Class.forName0(Native Method)
    	java.lang.Class.forName(Class.java:141)
    	java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
    	net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:58)
    	net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:365)
    	net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
    	net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:59)
    	net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:147)
    	net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:57)
    	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
    	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363)
    	servletReport.ServletReportStreamPDF.doGet(ServletReportStreamPDF.java:72)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

  2. #2
    Ti sono sincero: non ho mai usato Jasper anche se so a che serve.
    Siccome però sei disperato ti do cmq una mano...andando per tentativi e ti dico cosa farei io.
    Siccome è un problema di percorsi (in locale funziona mentre in remoto no), sbagli sicuramente il modo con cui imposti i percorsi nella classe. Ti ricordo che nelle Servlet bisogna passare per il context.
    Eccoti un esempio che ti può servire per adattarlo al tuo programma (vedi infatti com'è che si indica il percorso)

    Codice PHP:
    ServletContext context this.getServletConfig().getServletContext();

    String reportFileName context.getRealPath(/reports/tfr.jasper”);
    File reportFile = new File(reportFileName);

    (!reportFile.exists()) {
         try{
             
    JasperCompileManager.compileReportToFile(context.getRealPath(/reports/tfr.jrxml”));
          } catch (
    JRException e) { ... }

    Il mio è un tentativo, facci sapere se ho azzeccato o se cmq hai risolto e come.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  3. #3
    Sicuro di aver importato tutti i jar necessari nella tua webapplication?
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Intanto grazie infinite per il vostro interessamento. Le librerie sono tutte (ho provato a rinominare il war in zip ed al suo interno le vedo correttamente). Riguardo il percorso, sono stato costretto a identificarlo in quel modo perché seguendo la tua strada vedevo un errore (vedi mio post http://forum.html.it/forum/showthrea...readid=1310679).

    Vi prego, aiutatemi. Sono ancora in alto mare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.