gpt4 book ai didi

java - Jasper 报告构建中断(无编辑)

转载 作者:行者123 更新时间:2023-11-29 09:02:44 28 4
gpt4 key购买 nike

我从一位离开公司的开发人员那里继承了一个项目。该项目在 java 中(对我来说是新的)并使用 jasper 报告(对我来说是新的)生成 PDF。我需要更新其中一份报告以删除一些文本。如果我从源代码控制中获取代码并运行它,它就可以正常工作。但是,如果我打开其中一个 jrxml 文件并构建它而不做任何更改,然后尝试再次运行该报告,它就会中断。我得到的错误是:

java.lang.NullPointerException java.lang.Class.isAssignableFrom(Native Method) net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706) net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394) net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368) net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258) net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845) net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:609) net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205) java.lang.Thread.run(Unknown Source)

我这辈子都弄不清楚错误的含义或如何调试它。正如我上面所说,我没有对实际报告进行任何更改。我此时所做的只是在 iReport 中打开 jrxml 文件并构建它。如果我将 jasper 文件还原为已 checkin 的版本,则报告将再次开始工作。该报告有一些子报告,我构建的任何文件似乎都不会破坏整个报告。

我不知道它是否有帮助,但我调试了代码和它在读取时死掉的行:

bytes = JasperRunManager.runReportToPdf(...)

编辑:我的 jasper 报告 JAR 和我的 iReport 版本是不同的版本。我为我正在使用的 iRpeort 版本 (5.1.0) 添加了 JAR,现在我收到了一个新错误。进步!错误是:

cannot assign instance of net.sf.jasperreports.engine.base.JRBaseTextField to field net.sf.jasperreports.engine.base.JRBaseParagraph.paragraphContainer of type net.sf.jasperreports.engine.JRParagraphContainer in instance of net.sf.jasperreports.engine.base.JRBaseParagraph


感谢评论者的帮助。我刚去买了 iReport v4.0.1 来匹配我的 Jar。现在我可以编辑文件了。不幸的是,我没有时间去从头开始学习所有这些,所以我暂时厌倦了旧版本。

最佳答案

库中的某些功能从 4 变为 5,并且需要进行一些调整才能使报告正常工作。一个主要变化是条形码、iReport 如何包含它们以及它们支持的库。因为您不熟悉 java 或 JasperReports,所以我认为获取旧版本的 iReport 是正确的做法。

将来,知道可以使用 jrxml 文件而不是编译的 jasper 文件打包 JAR,并让库动态编译报告。这让维护不再是我发现的噩梦。

关于java - Jasper 报告构建中断(无编辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16425200/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com