我正在尝试在浏览器上显示我的报告,但我一直收到此错误:
关于这一点的奇怪之处在于,它只会在我尝试从服务器上安装的版本生成报告时发生,而不是在我从我的电脑本地生成报告时
你知道为什么会这样吗?
答案 0 :(得分:7)
这也可能是由于缺少/无法访问的Java& temp'目录。在Font.java中,正在创建临时文件:
Files.createTempFile("+~JF", ".tmp").toFile();
在一个系统上,' temp'在Tomcat文件夹下缺少dir,但Java已配置为使用它:
-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp
顺便说一句。第一次,在重新启动Tomcat之后,该服务实际上抛出了一个IOException,但随后JasperReports缓存了一些内容,并且在后续调用中,堆栈跟踪完全按照此处的报告进行。
答案 1 :(得分:7)
这似乎是无头模式问题。您需要将java.awt.headless
属性设置为true
。这可以使用:
static {
System.setProperty("java.awt.headless", "true");
}
或者,通过将tomcat启动命令中的无头属性设置为-Djava.awt.headless=true
此外,您可以阅读更多关于为什么这是必要的内容,您可以阅读有关无头模式的here
答案 2 :(得分:6)
这是类路径问题中缺少的jar。
我遇到了这个问题,发现通过将缺少的jar添加到类路径中,它解决了这个问题。
从下面的文章 java.dzone.com article 我发现必要的最小罐子是......现在版本号已经改变了,但只有这些库才能让它运转起来。
答案 3 :(得分:5)
对于仍然遇到此问题的人:在Ubuntu Server 12.04上使用无头OpenJDK JRE,它只是通过
解决了apt-get install ttf-dejavu-extra
答案 4 :(得分:4)
要解决此问题,请执行以下操作:
答案 5 :(得分:4)
这可能是内存问题,重启服务器。
答案 6 :(得分:4)
在docker容器中部署springboot应用程序(包括jasper报告)时遇到此错误。问题是我用来构建docker容器环境的 openjdk:8-jdk-alpine 。在字体支持方面存在一个错误。因此,我切换到了 openjdk:8-jre (或者OpenJDK 7版本也将有所帮助),它对我有用。 我花了几天的时间修复此错误。
答案 7 :(得分:3)
我知道我来晚了,但是忍不住回答这个问题,以帮助很多遇到麻烦的人。经过大量的试验和错误,发现tomcat的catalina.properties中排除了xml-apis jar。从那里删除它,它应该可以工作。直到现在都没有发现任何副作用,效果很好。
此外,请确保已安装字体,并检查gradle / pom的合并策略(如果在xml-apis jar上进行了任何排除)。
顺便说一句,在升级到jdk11并从tomcat 8升级到9之后,这个问题开始出现。
答案 8 :(得分:1)
有点晚了,但这就是我们遇到这个问题的原因......我们最近开始使用IntelliJ而不是Eclipse进行开发。我们只是忘了以管理员身份运行IntelliJ ...我们已经用Eclipse做了很长时间了,但是根本没有用IntelliJ来思考它。 最后,我猜没有找到字体或找不到文件夹,因为没有足够的权限在c盘上读/写。
答案 9 :(得分:0)
使用 Payara(在我的情况下为 4)已经有 -Djava.awt.headless=true
,我们使用的是 Jasper 6.6.0 但降级到 6.4.0(对于另一个依赖项)
我们在用 oracle JDK 8u281 全新安装 payara4 时遇到了同样的问题,降级到 8u181 或 8u171 解决了
答案 10 :(得分:0)
对我来说,这个错误是因为我升级了 JasperSoft Studio,此后新的或编辑过的报告在更新的 JasperReports 版本中编译,因此服务器无法读取。 Studio 中有一个编译兼容模式,但我无法使其工作,并且我在服务器上运行的版本 (6.6.0) 未在兼容版本列表中列为选项(并使用其他“关闭”版本也不起作用)。
我最终安装了旧版 Studio 6.6.0,并在其中重新编译了我的报告。当我将新的 .jasper 文件部署到服务器时,它们立即开始工作,一切又恢复正常。
答案 11 :(得分:0)
有2个步骤可以解决此问题。
-Djaav.awt.headless = true在启动脚本或虚拟机选项中
安装字体
yum install fontconfig
然后您可以验证
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字体,并认为我们不需要安装任何字体,但是是错误的。
答案 12 :(得分:0)
对我来说,问题在于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
的应用程序
答案 13 :(得分:0)
在我的情况下,问题是我用来构建docker映像的jdk8,但是经过一番搜索后,我切换到了jre。那解决了我的错误。我认为您可以尝试使用任何图像,而不必使用jdk8。
答案 14 :(得分:0)
我在开发机器上遇到了同样的问题。基本上是由于应用服务器( Apache tomcat )
中的问题而发生的基本上我不小心删除了服务器根目录中的“ temp ”文件夹。因此jasper无法编译报告并继续生成报告。
答案 15 :(得分:0)
在我们的例子中,它有助于删除临时服务器(从而确保没有jar重复)并重新启动服务器。 提示:如果错误在新版本发生后开始(但之前有效,并且在发布中没有任何相关更改),请尝试此操作
答案 16 :(得分:0)
这可能有所帮助,我遇到了同样的错误,其他所有解决方案都没有用。
我通过更新到java8来修复它。
答案 17 :(得分:0)
我搜索了几个小时的同一个问题,我的解决方案都没有提到其他人。
由于我的jasper报告版本更新不好,我的classpath上有多个版本的jasperreports jar文件。确保你只有一个jasperreports jar文件......
答案 18 :(得分:0)
在我的情况下,我使用的是Arial字体,我在irfonts.xml中配置了arial字体 这就像下面的
< fontFamily name =“Arial”>
< normal><![CDATA [fonts / arial.ttf]]>
< / normal>
< bold><![CDATA [fonts / arialbd.ttf]]>
< / bold>
< italic><![CDATA [字体/ ariali.ttf]] GT;
< /斜体>
< BOLDITALIC><![CDATA [字体/ arialbi.ttf]] GT;
< / BOLDITALIC&GT ;
< pdfEmbedded><![CDATA [TRUE]]>
< / pdfEmbedded>< / fontFamily中>
但应该是这样的:
< fontFamily name =“Arial”>
< normal><![CDATA [fonts / arial.ttf]]><
/ normal>< bold> <![CDATA [字体/ arialbd.ttf]] GT;< /粗体>
&LT;斜体&GT;&LT;![CDATA [字体/ ariali.ttf]] GT;&LT; /斜体&GT; <无线电通信/>&LT; BOLDITALIC&GT;&LT ;!
[CDATA [字体/ arialbi.ttf]] GT;&LT; / BOLDITALIC&GT;
&LT; pdfEmbedded&GT;&LT ;!
[CDATA [TRUE] ]&GT;&LT; / pdfEmbedded&GT;
&LT; / fontFamily中&GT;
所以它们是上面配置文件中每个标签的结束标记之前的空格。
我通过删除它们之间的空格来修复它。
答案 19 :(得分:0)
得到了同样的错误 - 显然JRStyledTextParser正在使用来自xml-apis的依赖项 通过添加xml-apis,我得到了修复
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
答案 20 :(得分:-1)
您可以尝试降级到jdk7,这对我有用。
抱歉,我的英文!