-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Description
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:
- ./mvnw clean package -Pnative
- docker build . -f src/main/docker/Dockerfile-ubi9-micro.native -t app
- 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:
- ./mvnw clean package -Pnative -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21
- docker build . -f src/main/docker/Dockerfile-ubi8-micro.native -t app
- 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