我不能从java应用程序调用jaspert报告jrxml

时间:2016-05-04 18:41:38

标签: java jasper-reports

我正在尝试调用我的报告并显示它,但它无法正常工作!!!

这是代码:

/ *  *要更改此许可证标题,请在“项目属性”中选择“许可证标题”。  *要更改此模板文件,请选择“工具”|模板  *并在编辑器中打开模板。  * /

package Frames;

import java.beans.PropertyVetoException;
import java.io.InputStream;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.swing.*;

/**
 *
 * @author Ma3d Sa3eed
 */
public class ReportViewer extends javax.swing.JFrame {

    java.awt.Container c;

    public ReportViewer(String rptPath, HashMap parameter) {
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora10g", "employees", "manager");
            JasperPrint print = JasperFillManager.fillReport(rptPath, parameter, con);
            JRViewer viewer = new JRViewer(print);
            c = getContentPane();
            c.setLayout(new java.awt.BorderLayout());
            c.add(viewer);
            show();
        } catch (Exception x) {
            x.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我会加载一个JasperReport对象,并使用你的rptPath传递填充管理器而不仅仅是这样的路径(假设它是你的jasper报告的完整文件路径):

JasperReport report = (JasperReport) JRLoader.loadObject(rptPath);
JasperPrint print = JasperFillManager.fillReport(report, parameter, con);

然后将其传递给您要在其中显示报告的JFrame。

答案 1 :(得分:0)

试试这个,假设您的abc.jrxml位于文件夹xyz:

InputStream stream = getClass().getClassLoader().getResourceAsStream("/xyz/abc.jrxml");
JasperReport report = JasperCompileManager.compileReport(stream);
JaperPrint finalReport = JasperFillManager.fillReport(report, parameter, con);