Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker and Spring boot giving "sun.awt.FontConfiguration.head" is null [duplicate]

I currently have an app built with spring boot. Im using Jasper reports. When I try to generate a report, I get the following error:

java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1260) ~[na:na]

The application works fine on my computer, it only fails in docker.

Here's my Dockerfile:

FROM openjdk:17-alpine
EXPOSE 10093
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} site_informativo.jar

RUN apk update;
RUN apk add -f apt-utils;
RUN apk add -f libfreetype6;
RUN apk add --no-cache -f fontconfig;
RUN apk add -f fonts-dejavu;
RUN apk add -f msttcorefonts;
RUN apk add -f libfontconfig1;
RUN apk add -f freetype;
RUN fc-cache --force

ENTRYPOINT ["java","-jar","/site_informativo.jar"]

I have also added jasperreports-fonts EXTENSION in pom.xml but THE PROBLEM CONTINUES.

<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports -->
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.20.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports-fonts -->
<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports-fonts</artifactId>
    <version>6.20.0</version>
</dependency>

Some more context

If I do

FROM openjdk:17-oracle
EXPOSE 10093
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} site_informativo.jar

ENTRYPOINT ["java","-jar","/site_informativo.jar"]

I get

Font "Times New Roman" is not available to the JVM. See the Javadoc for more details.

like image 507
KenobiBastila Avatar asked Sep 02 '25 10:09

KenobiBastila


1 Answers

Solved by adjusting the dockerfile to install the proper microsoft fonts.

FROM openjdk:17-alpine
EXPOSE 10093
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} site_informativo.jar
 
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts

ENTRYPOINT ["java","-jar","/site_informativo.jar"]

References:

How to install fonts in Docker?

like image 115
KenobiBastila Avatar answered Sep 04 '25 00:09

KenobiBastila