【问题标题】:Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser无法初始化类 net.sf.jasperreports.engine.util.JRStyledTextParser
【发布时间】:2011-02-15 00:06:45
【问题描述】:

我正在尝试在浏览器上显示我的报告,但我不断收到此错误:

奇怪的是,它只发生在我尝试从服务器上安装的版本生成报告时,而不是当我从我的电脑本地生成报告时发生

你知道为什么会这样吗?

【问题讨论】:

  • 你在运行什么样的服务器?您是否检查过 Jasper 库是否在您的服务器上?听起来像你失踪了。
  • 感谢上帝,我很久以前就离开了 Java 世界! XD

标签: jasper-reports


【解决方案1】:

对于那些仍然遇到这个问题的人:在带有无头 OpenJDK JRE 的 Ubuntu Server 12.04 上,它被简单地解决了

apt-get install ttf-dejavu-extra

【讨论】:

    【解决方案2】:

    这似乎是无头模式问题。您需要将java.awt.headless 属性设置为true。这可以使用:

    static {
        System.setProperty("java.awt.headless", "true");
    }
    

    或者,在你的tomcat启动命令中设置headless属性为-Djava.awt.headless=true

    另外,你可以阅读更多关于为什么这是必要的,你可以阅读无头模式here

    【讨论】:

      【解决方案3】:

      对我来说,问题是关于 AdoptOpenJDK: https://github.com/AdoptOpenJDK/openjdk-build/issues/682 中的一个错误

      我通过在我的 dockerfile 中手动安装 ttf-dejavu 解决了这个问题

      FROM adoptopenjdk/openjdk8:alpine-jre
      
      # Workaround for wrong font configuration in adoptopenjdk
      # https://github.com/AdoptOpenJDK/openjdk-build/issues/682
      RUN apk update && apk upgrade \
         && apk add --no-cache ttf-dejavu \
         # Install windows fonts as well. Not required..
         && apk add --no-cache msttcorefonts-installer \
         && update-ms-fonts && fc-cache -f
      

      并且通过运行带有标志-Djava.awt.headless=true的应用程序

      【讨论】:

        【解决方案4】:

        这是类路径问题中缺少 jars。

        我遇到了这个问题,发现通过将缺少的 jar 添加到类路径中可以解决问题。

        来自下面的文章 java.dzone.com article 我发现所需的最小 jars 是......现在版本号已经改变,但只有这些库我设法让它工作。

        • jasperreports-2.0.4.jar
        • commons-digester-1.7.jar
        • commons-collections-2.1.jar (commons-collections.jar)
        • commons-logging-1.0.2.jar
        • commons-beanutils.jar
        • iText-2.0.7.jar(用于 PDF 导出)

        【讨论】:

          【解决方案5】:

          这也可能是由于缺少/无法访问 Java 'temp' 目录造成的。在 Font.java 中,正在创建临时文件:

          Files.createTempFile("+~JF", ".tmp").toFile();
          

          在一个系统上,Tomcat 文件夹下缺少“temp”目录,但 Java 已配置为使用它:

          -Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp
          

          顺便说一句。第一次,在重新启动 Tomcat 后,该服务实际上抛出了一个 IOException,但随后 JasperReports 缓存了一些内容,并且在随后的调用中,堆栈跟踪与此处报告的完全相同。

          【讨论】:

          • 这个答案真的很有帮助,对我有用......谢谢并赞成:)
          【解决方案6】:

          在 docker 容器中部署 springboot 应用程序(包括 jasper 报告)时出现此错误。问题出在我用于构建 docker 容器环境的 openjdk:8-jdk-alpine 上。这在字体支持中有一个错误。因此我切换到 openjdk:8-jre (或者 OpenJDK 7 版本也会有所帮助),它对我有用。 我花了几天时间来修复这个错误。

          【讨论】:

            【解决方案7】:

            要解决此问题,请执行以下操作:

            1. 从 Open JDK 切换到 Sun JDK
            2. 安装的 MS Core 字体
            3. 与应用程序一起打包的 JasperReport 字体库 jar

            【讨论】:

              【解决方案8】:

              这可能是内存问题,重新启动服务器。

              【讨论】:

              • 当生成JR输出的系统磁盘空间不足时也会出现此错误。
              • @IsraelLopez 这就是我的问题
              • 我刚刚重启了我的电脑,问题就消失了。谢谢
              【解决方案9】:

              我知道我迟到了,但忍不住回答这个问题来帮助很多陷入困境的人。经过大量的试验和错误,发现在tomcat的catalina.properties中排除了xml-apis jar。从那里删除它,它应该可以工作。到现在都没发现有什么副作用,效果很好。

              另外,如果在 xml-apis jar 上做了任何排除,请确保字体已安装并检查 gradle/pom 的合并策略。

              顺便说一句,这个问题是在升级到 jdk11 并从 tomcat 8 迁移到 9 之后开始出现的。

              【讨论】:

                【解决方案10】:

                我为同一个问题搜索了几个小时,但我的解决方案都没有提到。

                由于我的 jasper 报告版本更新错误,我的类路径中有多个版本的 jasperreports jar 文件。确保您只有一个 jasperreports jar 文件...

                【讨论】:

                  【解决方案11】:

                  有点晚了,但这就是我们遇到这个问题的原因...我们最近开始使用 IntelliJ 而不是 Eclipse 进行开发。我们只是忘记以管理员身份运行 IntelliJ ......我们已经用 Eclipse 做了很长时间,但根本没有考虑用 IntelliJ。 最后,我猜是没有找到字体或没有找到文件夹,因为在c盘上没有足够的读/写权限。

                  【讨论】:

                  • 我使用的是 Net Beans,并通过以管理员身份运行解决了这个问题。谢谢!!
                  【解决方案12】:

                  遇到同样的错误 - 显然 JRStyledTextParser 正在使用来自 xml-apis 的依赖项 通过添加 xml-apis 我得到了修复

                  <dependency>
                      <groupId>xml-apis</groupId>
                      <artifactId>xml-apis</artifactId>
                      <version>1.4.01</version>
                  </dependency>
                  

                  【讨论】:

                    【解决方案13】:

                    在我的情况下,我为此使用 Arial 字体,我在 irfonts.xml 中配置了 arial 字体 如下所示










                    但应该是这样的:

                    /normal>


                    [CDATA[fonts/arialbi.ttf] ]>
                    [CDATA[true]]>

                    所以它们是上述配置文件中每个标签的结束标签之前的一个空格。
                    我通过删除它们之间的空格来修复它。

                    【讨论】:

                      【解决方案14】:

                      这可能会有所帮助,我遇到了同样的错误,其他所有解决方案都不起作用。

                      我通过更新到 java8 来修复它。

                      【讨论】:

                        【解决方案15】:

                        在我们的例子中,它有助于删除临时服务器(从而确保没有 jar 重复)并重新启动服务器。 提示:如果在新版本之后开始出现错误(但之前工作过并且版本中没有任何相关更改),请尝试此操作

                        【讨论】:

                          【解决方案16】:

                          我在我的开发机器上遇到了同样的问题。基本上是由于应用服务器(Apache tomcat)出现问题

                          基本上我不小心删除了服务器根目录中的“temp”文件夹。所以 jasper 无法编译报告并继续生成报告。

                          【讨论】:

                            【解决方案17】:

                            你可以尝试降级到jdk7,它对我有用。

                            对不起我的英语!

                            【讨论】:

                              【解决方案18】:

                              在我的情况下,问题出在我用来构建 docker 映像的 jdk8 上,但经过一番搜索后,我切换到了 jre。这解决了我的错误。我认为您可以尝试任何图像而不是使用 jdk8。

                              【讨论】:

                                【解决方案19】:

                                解决这个问题有两个步骤。

                                1. -Djaav.awt.headless=true 在启动脚本或虚拟机选项中

                                2. 安装字体

                                  yum 安装字体配置

                                然后就可以验证了

                                rpm -qa | grep font
                                fontpackages-filesystem-1.44-8.el7.noarch
                                dejavu-fonts-common-2.33-6.el7.noarch
                                fontconfig-2.13.0-4.3.el7.x86_64
                                dejavu-sans-fonts-2.33-6.el7.noarch
                                

                                这是在 CentOS 7 上。 我们一直在使用 Google Noto 字体,并认为我们不需要任何字体安装,但错了。

                                【讨论】:

                                  【解决方案20】:

                                  对我来说,这个错误是因为我升级了 JasperSoft Studio,然后新的或编辑过的报告在更新的 JasperReports 版本中编译,因此服务器无法读取。 Studio 中有一个编译兼容模式,但我无法让它工作,而且我在服务器上运行的版本(6.6.0)没有列为兼容版本列表中的选项(并且使用其他“关闭”版本也不起作用)。

                                  我最终安装了旧版 Studio 6.6.0,并在其中重新编译了我的报告。当我将新的 .jasper 文件部署到服务器时,它们立即工作,一切都恢复正常。

                                  【讨论】:

                                    【解决方案21】:

                                    使用 Payara(在我的情况下为 4)已经有 -Djava.awt.headless=true,我们正在使用 Jasper 6.6.0 但降级到 6.4.0(用于另一个依赖项) 我们在使用 oracle JDK 8u281 全新安装 payara4 时遇到了同样的问题,降级到 8u181 或 8u171 解决了它

                                    【讨论】:

                                      【解决方案22】:

                                      升级您的 jasperreports 依赖项。

                                      在使用这个过时版本的 jasperreports 时,我得到了类似的堆栈跟踪:

                                      <dependency>
                                          <groupId>net.sf.jasperreports</groupId>
                                          <artifactId>jasperreports</artifactId>
                                          <version>6.1.0</version>
                                      </dependency>
                                      

                                      这解决了我的问题:

                                      <dependency>
                                          <groupId>net.sf.jasperreports</groupId>
                                          <artifactId>jasperreports</artifactId>
                                          <version>6.17.0</version>
                                      </dependency>
                                      

                                      【讨论】:

                                        猜你喜欢
                                        • 2017-08-24
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2021-11-03
                                        • 2012-08-01
                                        • 2012-10-10
                                        • 2015-11-23
                                        • 2011-09-28
                                        相关资源
                                        最近更新 更多