gpt4 book ai didi

java - JasperReports : java. lang.NoClassDefFoundError : Could not initialize class net. sf.jasperreports.engine.util.JRStyledTextParser

转载 作者:行者123 更新时间:2023-11-28 22:11:17 28 4
gpt4 key购买 nike

我想分享我对 JasperReports 或多或少常见错误的经验。

在执行JasperReports制作PDF报表时出现异常:

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:108)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200)
net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983)

我的环境:

  • CentOs 6.6 - 内核 2.6.32-504.el6.x86_64
  • Java 1.7_79(周日)
  • JasperReport 6.2.2
  • Apache Tomcat 7.0.68

同样的问题:

我尝试了这些解决方案但没有成功。

最佳答案

所以这里要做一些检查:

  • 红帽知识库:https://access.redhat.com/solutions/1311113 .
    VMWare 知识库:https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2010240 .
    您的环境应该安装了 X11 和/或图形包(字体等),或者您必须使用 -Djava.awt.headless=true 选项运行 Java。使用 headless,你的库需要包含字体(默认的 JasperReport 字体是 Pictonic.ttf)
  • 清理您的 Tomcat 缓存,不要进行热部署。某些 JasperReport 版本在某些类中使用 ThreadLocal 时存在内存泄漏。参见示例 http://community.jaspersoft.com/jasperreports-library/issues/4403-0
  • JRStyledTextParser 有一个可以屏蔽一些异常的静态初始化器。它特别通过使用 java.awt 中的字体实现来初始化缓存中字体(在操作系统上或包含在 jar 中)的加载。但是,查看 Font 的源代码:

    private static boolean hasTempPermission() {

    if (System.getSecurityManager() == null) {
    return true;
    }
    File f = null;
    boolean hasPerm = false;
    try {
    f = Files.createTempFile("+~JT", ".tmp").toFile();
    f.delete();
    f = null;
    hasPerm = true;
    } catch (Throwable t) {
    /* inc. any kind of SecurityException */
    }
    return hasPerm;
    }

Java 创建临时文件(如果已指定,则使用 java.io.tmp 选项)。因此,请检查您的临时文件夹是否已满且 Java PID 的用户/组不可写。如果不是,则会抛出异常,但会被捕获且不可见...

关于java - JasperReports : java. lang.NoClassDefFoundError : Could not initialize class net. sf.jasperreports.engine.util.JRStyledTextParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43113372/

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