当前位置: 首页 > 面试题库 >

jasperReport文件中发生错误

东郭宏深
2023-03-14
问题内容

首先,我在iReport 5.1.0中制作了一个R_D1.jrxml文件。

我执行报告的Java代码如下所示:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;

public class DbReportFill{

  Connection con;
  public void generateReport() {
    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sentiment","root", "abcd");
      System.out.println("Filling report...");
      JasperFillManager.fillReportToFile("/home/abcd/report/R_D1.jrxml",new HashMap<String, Object> (), con);
      System.out.println("Done!");
      con.close();
    } catch (JRException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    new DbReportFill().generateReport();
  }

}

当我执行该类时,出现以下异常:

Filling report...
net.sf.jasperreports.engine.JRException: Error loading object from file : /home/abcd/report/R_D1.jrxml  
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:127)  
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:99)   
at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:117) 
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:666)
at DbReportFill.generateReport(DbReportFill.java:24)    
at DbReportFill.main(DbReportFill.java:56)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D    
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:802)   
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299) 
at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:122)
... 5 more

我不确定自己在做什么错,或者这个异常意味着什么。


问题答案:

这里的主要问题是您尚未编译文件。将JRXML文件视为Java源文件。要运行Java文件,您必须先对其进行编译,然后才能运行。jrxml文件只是人类可读的XML文件,它描述了您想要发生的事情。

要编译文件,请执行以下操作:

JasperCompileManager.compileReport("/home/abcd/report/R_D1.jrxml");

这将返回您和的实例JasperReport,该实例是已编译的文件。(通常将其写到.jasper文件中,因此您不必在每次运行时都编译报告,但这超出了此问题的范围)。一旦有了这个,就可以填写报告。

另外,不相关但值得一提的是,您应该在finally块中关闭数据库连接。与您当前的示例一样,它永远不会关闭,因为会引发异常。final块将确保即使在发生异常的情况下也将其关闭。

您的示例方法应如下所示:

public void generateReport() {
  Connection con
  try {
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sentiment","root", "abcd");
    System.out.println("Compiling report...");
    JasperReport jasperReport = JasperCompileManager.compileReport("/home/abcd/report/R_D1.jrxml");
    System.out.println("Filling report...");
    JasperFillManager.fillReportToFile(jasperReport,new HashMap<String, Object> (), con);
    System.out.println("Done!");
  } catch (JRException e) {
    e.printStackTrace();
  } catch (ClassNotFoundException e) {
    e.printStackTrace();
  } catch (SQLException e) {
    e.printStackTrace();
  } finally {
    if (con != null){
      con.close();
    }
  }
}

希望能有所帮助。祝好运。



 类似资料:
  • 我在纠结用Java生成JasperReport。不考虑数据源,因此所有值都为null,并且不显示子报表。 我从下面粘贴的JSON中创建了带有选项“填充报告时使用报告JSON表达式”的JSONData适配器。从Jasper Studio编译它时,它正在正确创建报告,而尝试从Java编译它会导致空报告(仅显示字段名),根本没有子报告。请帮助解决此问题。 main.jrxml subreport.jrx

  • 我需要一些关于JasperReport的帮助,这是我的模板 下面是主要类:

  • 当我从iReport编译我的. jrxml文件时,我没有问题,一切都很好。但是当我试图从我的Java程序打印时,它显示了这样一个错误: 错误评估表达式:源文:新java.lang.整数(1) 这是我的。jrxml文件 有什么想法吗? 更新我试图把语言改成Java。我在编译时遇到了一些错误:

  • 当我试图使用命令: 错误:发生了JNI错误,请检查您的安装并在线程“main”java中重试。lang.NoClassDefFoundError:org/apache/http/client/ClientProtocolException 它在eclipse中运行良好。请帮忙。

  • 我在maven项目中得到了以下错误。我在看视频教程。并且maven文件相当简单。 下面是maven文件。 在stackoverflow的另一篇文章中有一篇关于文件格式的文章,因此我也将文件格式更改为utf-8。 任何解决这个问题的建议都会很有帮助。谢谢!

  • 在weblogic中部署war文件时出现以下错误 消息图标-发现错误验证问题<5:4>问题:CVC->complex-type.2.3:仅元素内容类型的元素“web-app@http://java.sun.com/xml/ns/javaee”不能有文本内容。<14:5>问题:cvc-complex-type.2.4a:元素servlet-mapping@http://java.sun.com/xm