Erro com Relatórios (IReport + Java)

2 respostas
mfidelis

Boa tarde pessoal,
Criei um relatório no IReport 4.1.1 e quando fui chama -lo via java deu erro, postarei abaixo o codigo de chamada do relatorio:

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.SQLException;  
import java.util.HashMap;  
import javax.swing.JOptionPane;  
import net.sf.jasperreports.engine.*;  
import net.sf.jasperreports.engine.util.JRLoader;  
import net.sf.jasperreports.view.*;  
  
/** 
* 
* @author Michael 
*/  
public class Jasper {  
  
    private static Connection getConnection() throws  
        ClassNotFoundException, SQLException {  
        String driver = "com.mysql.jdbc.Driver";  
        String url = "jdbc:mysql://localhost:3306/Empresa";  
        String user = "root";  
        String password = "root";  
  
        Class.forName(driver);  
        Connection con = DriverManager.getConnection(url, user, password);  
        return con;  
    }  
  
    public static void main(String[] args) throws JRException, Exception {  
        new Jasper().gerar();  
    }  
  
    
public JasperPrint gerar() throws JRException, SQLException, ClassNotFoundException {  
        JasperPrint rel = null;  
        try {  
            Connection con = getConnection();  
            HashMap map = new HashMap();  
            String arquivoJasper = "Empresa.jasper";  
            rel = JasperFillManager.fillReport(arquivoJasper, map, con);  
        } catch (JRException e) {  
            JOptionPane.showMessageDialog(null,e.getMessage());  
        }  
        return rel;  
    }  
}

e o código de Erro foi o seguinte:

Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: Unknown hyperlink target 0
	at net.sf.jasperreports.engine.JRHyperlinkHelper.getLinkTarget(JRHyperlinkHelper.java:273)
	at net.sf.jasperreports.engine.base.JRBaseTextField.normalizeLinkTarget(JRBaseTextField.java:317)
	at net.sf.jasperreports.engine.base.JRBaseTextField.readObject(JRBaseTextField.java:381)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
	at java.util.ArrayList.readObject(ArrayList.java:733)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:498)
	at net.sf.jasperreports.engine.base.JRBaseFrame.readObject(JRBaseFrame.java:603)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
	at java.util.ArrayList.readObject(ArrayList.java:733)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
	at Popular.Reports.Jasper.gerar(Jasper.java:41)
	at Popular.Reports.Jasper.main(Jasper.java:31)

Gostaria que alguem me ajudasse, pois sou novo em java, ja tentei diversas formas diferentes, mas todas geram o mesmo erro…

2 Respostas

junhu

dá uma lida nisso

R

Cara, faz assim..

no seu Servlet:

package control;   
  
import java.io.IOException;   
import java.io.OutputStream;   
  
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
import net.sf.jasperreports.engine.JRResultSetDataSource;   
import net.sf.jasperreports.engine.JasperCompileManager;   
import net.sf.jasperreports.engine.JasperExportManager;   
import net.sf.jasperreports.engine.JasperFillManager;   
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.engine.JasperReport;   
import net.sf.jasperreports.engine.design.JasperDesign;   
import net.sf.jasperreports.engine.xml.JRXmlLoader;   
  
import persistence.ProdutoDao;   
  
public class Relatorio extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
  
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
    protected void doPost(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
  
    protected void execute(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
           
        ProdutoDao d = new ProdutoDao();   
           
        try{   
            d.open();   
               
    //JasperReports -> iReport   
           
    //Passo o ResultSet do JDBC para o Relatorio   
        JRResultSetDataSource ds = new JRResultSetDataSource(d.findAll());   
               
    //Arquivo do relatório   
        JasperDesign jd = JRXmlLoader.load("c:\\aula\\relatorio.jrxml");   
               
    //Compilar o relatório   
        JasperReport jr = JasperCompileManager.compileReport(jd);   
               
    //Mescar os dados do JDBC ao documento do Relatório   
        JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);   
               
            //Download de PDF   
        response.reset();   
        response.setContentType("application/pdf");   
               
        OutputStream out = response.getOutputStream();   
        JasperExportManager.exportReportToPdfStream(jp, out);   
        out.flush();   
        out.close();               
        }   
        catch(Exception e){   
            e.printStackTrace();   
        }   
        finally{   
            d.close();   
        }   
       
    }   
       
  
  
}

ai você faz no seu DAO... ProdutoDao que seja....

public ResultSet findAll() throws Exception{   
           
    stmt = con.prepareStatement("select * from produto");   
    rs = stmt.executeQuery();   
           
    return rs; //Retorna o proprio ResultSet com os dados do JDBC   
}

Qualquer coisa.. ^.^...

Criado 3 de janeiro de 2012
Ultima resposta 3 de jan. de 2012
Respostas 2
Participantes 3