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

关于这一点的奇怪之处在于它只会在我尝试从服务器上安装的版本生成报告时发生,而不是在我从我的PC本地执行时
你知道为什么会这样吗?
这似乎是无头模式问题.您需要将java.awt.headless属性设置为true.这可以使用:
static {
System.setProperty("java.awt.headless", "true");
}
Run Code Online (Sandbox Code Playgroud)
或者,通过将tomcat启动命令中的无头属性设置为 -Djava.awt.headless=true
此外,您可以阅读更多关于为什么这是必要的,您可以在这里阅读无头模式
对我来说,问题是关于一个错误AdoptOpenJDK:https : //github.com/AdoptOpenJDK/openjdk-build/issues/682
我通过ttf-dejavu在我的 dockerfile 中手动安装解决了这个问题
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
Run Code Online (Sandbox Code Playgroud)
并且通过运行带有标志的应用程序 -Djava.awt.headless=true
这是类路径问题中缺少的jar.
我有这个问题,发现通过将缺少的jar添加到类路径,它解决了问题.
从下面的文章 java.dzone.com文章中 我发现必要的最小罐子是......现在版本号已经改变但是只有这些库才能让它运行起来.
对于那些仍然遇到这个问题的人:在带有无头OpenJDK JRE的Ubuntu Server 12.04上,它只是通过
apt-get install ttf-dejavu-extra
Run Code Online (Sandbox Code Playgroud)
这也可能是由缺少/无法访问的Java'temp'目录引起的.在Font.java中,正在创建临时文件:
Files.createTempFile("+~JF", ".tmp").toFile();
Run Code Online (Sandbox Code Playgroud)
在一个系统上,Tomcat文件夹下缺少'temp'dir,但Java配置为使用它:
-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp
Run Code Online (Sandbox Code Playgroud)
BTW.第一次,在重新启动Tomcat之后,该服务实际上抛出了一个IOException,但随后JasperReports缓存了一些内容,并且在后续调用中,堆栈跟踪完全如此处所报告的那样.
小智 5
我在docker容器中部署springboot应用程序(包括jasper报告)时遇到此错误。问题出在我用来构建docker容器环境的openjdk:8-jdk-alpine。在字体支持方面存在一个错误。因此,我切换到openjdk:8-jre(或OpenJDK 7版本也将有所帮助),它对我有用。我花了几天的时间修复此错误。
| 归档时间: |
|
| 查看次数: |
60667 次 |
| 最近记录: |