JasperReports类路径

时间:2011-10-19 15:26:21

标签: java swing jasper-reports ireport

我想在 NetBeans swing项目中包含 .jrxml 文件。我使用 NetBeans 7.0.1 。我在源代码包中创建了一个名为“rep”的包,并创建了一个名为“rp.jrxml”的简单 .jrxml 文件。 我在 NetBeans 中安装了 iReport 插件。当我设置外部 .jrxml 文件时,会显示(“D:/MyReports/firstreport.jrxml”),但是当我设置 NetBeans 包路径时,它不是所示。这是我的代码。

try {
       String reportSource="/rep/rp.jrxml";  //and also "rep/rp.jrxml" is used.no result.            
        Map<String, Object> params = new HashMap<String, Object>();
        JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
        JasperViewer.viewReport(jasperPrint, false);
    } catch (Exception e) {e.printStackTrace();
    }

然后给出以下错误;

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: rep\rp.jrxml (The system cannot find the path specified)

如何在 NetBeans 项目中保留 jrxml 文件,并在项目中使用 jrxml 文件?

2 个答案:

答案 0 :(得分:1)

此代码适用于我:

public class TestJasper {

    public static void main(String[] args) {
        try {
            String reportSource = "resources/report1.jrxml";
            Map<String, Object> params = new HashMap<String, Object>();
            JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());
            JasperViewer.viewReport(jasperPrint, false);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

我的项目结构:

build
    classes
        TestJasper.class
dist 
nbproject
resources
    report1.jrxml 
src
    TestJasper.java 

更新:
要解决net.sf.jasperreports.engine.JRException: No report compiler set for language : null问题,您可以尝试设置groovy报告语言并将groovy-all-jdk14库添加到类路径中。
你可以获得groovy库here

语言设置为groovy的报告标题示例:

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
... 
language="groovy" 
...>

答案 1 :(得分:0)

这里是解决方案。最好在jar文件本身中提供绝对路径。也就是说,当运行jar时,使用* .jasper文件最好使用而不是.jrxml,这可能会导致生成然后报告。然后.jasper可以作为输入流发送到JasperFillManager。就是这样。