【问题标题】:JasperReports class pathJasperReports 类路径
【发布时间】:2011-10-19 15:26:20
【问题描述】:

我想在我的 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 文件?

【问题讨论】:

  • 使用 YourClass.getResource 方法,该方法应返回特定于 yourClass 包的 rp.jrxml 的 URL。使用返回的 URL 确定实际路径。
  • 谢谢。但它没有工作。然后它给出了另一个错误net.sf.jasperreports.engine.JRException: No report compiler set for language : null

标签: java swing jasper-reports ireport


【解决方案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());
        }
    }
}

我的项目结构:

建造 班级 测试Jasper.class 距离 NB项目 资源 报告1.jrxml 源代码 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" 
...>

【讨论】:

  • 谢谢亚历克斯先生。类路径与我创建的相同。唯一的区别是项目和类名。但它没有用。上面提到的错误net.sf.jasperreports.engine.JRException: No report compiler set for language : null
  • 在您的示例中,您写道:String reportSource="/rep/rp.jrxml"; 请尝试将其更改为以下表达式:String reportSource="rep/rp.jrxml";
  • @Mr.Alex,感谢您的评论。我以每种格式都更改了它。但没有用。
  • 我认为您使用的是不同版本的 JasperReports(在 iReport 和您的项目库中)
  • 你能发布报告的标题吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 2011-07-19
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多