Skip to content

Quarkus 3.20 UBI9 micro image - Fontconfig head is null, check your fonts or fonts configuration #49226

@TKufrin

Description

@TKufrin

Describe the bug

Quarkus 3.20 native image based on UBI 9 quarkus micro image (based on UBI minimal 9.5) throws error when trying to find font family.

Finding font family based on java.awt.Font.getFamily() throws:

java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration at [email protected]/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1263) at [email protected]/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221) at [email protected]/sun.awt.FontConfiguration.init(FontConfiguration.java:105) at [email protected]/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:696) at [email protected]/sun.font.SunFontManager$2.run(SunFontManager.java:352) at [email protected]/sun.font.SunFontManager$2.run(SunFontManager.java:309) at [email protected]/java.security.AccessController.executePrivileged(AccessController.java:129) at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:319) at [email protected]/sun.font.SunFontManager.<init>(SunFontManager.java:309) at [email protected]/sun.awt.FcFontManager.<init>(FcFontManager.java:35) at [email protected]/sun.awt.X11FontManager.<init>(X11FontManager.java:55) at [email protected]/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37) at [email protected]/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51) at [email protected]/java.awt.Font.getFont2D(Font.java:526) at [email protected]/java.awt.Font.getFamily(Font.java:1433) at [email protected]/java.awt.Font.getFamily_NoClientCode(Font.java:1407) at [email protected]/java.awt.Font.getFamily(Font.java:1399) at org.acme.QuarkusMainApp.findFontFamily(QuarkusMainApp.java:37) at org.acme.QuarkusMainApp.run(QuarkusMainApp.java:16) at org.acme.QuarkusMainApp_ClientProxy.run(Unknown Source) at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:143) at io.quarkus.runtime.Quarkus.run(Quarkus.java:77) at io.quarkus.runtime.Quarkus.run(Quarkus.java:48) at io.quarkus.runner.GeneratedMain.main(Unknown Source) at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

Expected behavior

Should not throw exception but find font family.

Actual behavior

Does not find font family.

How to Reproduce?

quarkus-ubi9-micro-font-issue.zip

A minimal reproducer is attached with a small maven Quarkus CMD application and necessary dependencies.

To reproduce run:

  1. ./mvnw clean package -Pnative
  2. docker build . -f src/main/docker/Dockerfile-ubi9-micro.native -t app
  3. docker run --rm app

Output of uname -a or ver

Linux YMQC009090 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Output of java -version

openjdk version "21.0.7" 2025-04-15
OpenJDK Runtime Environment (build 21.0.7+6-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 21.0.7+6-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Mandrel or GraalVM version (if different from Java)

MANDREL 23.1.8.0 JDK 21.0.8+9-LTS

Quarkus version or git rev

3.20.0

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /home/tinkufrin/.m2/wrapper/dists/apache-maven-3.9.9-bin/33b4b2b4/apache-maven-3.9.9
Java version: 21.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64
Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "5.10.102.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"

Output of docker -v

Docker version 28.1.1, build 4eba377

Additional information

If app is built for UBI 8 then it works.
To reproduce this:

  1. ./mvnw clean package -Pnative -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21
  2. docker build . -f src/main/docker/Dockerfile-ubi8-micro.native -t app
  3. docker run --rm app

Also it works with UBI 9.5 minimal, without quarkus UBI9 micro image.
To reproduce build with Dockerfile-ubi9-macro.native

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions