Donatello
Donatello

Reputation: 3745

java.lang.NoClassDefFoundError: Could not initialize class sun.font.SunFontManager with OpenJDK 11.0

We are facing this error since migration from OpenJDK 8 to OpenJDK 11.0.9 from openjdk:11-jdk-slim.

java.lang.NoClassDefFoundError: Could not initialize class sun.font.SunFontManager
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
        at java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:869)
$ java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment 18.9 (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9.1+1, mixed mode)

Similar issue has been registered on RedHat here: http://bugzilla.redhat.com/show_bug.cgi?id=1768935

However, as far as I understand, we are not using JDK from RedHat source code (even if openjdk-11 project is built and packaged by them, before being used by AdoptOpenJDK project....).

Upvotes: 3

Views: 8099

Answers (2)

anstue
anstue

Reputation: 1090

What worked for me with openjdk:11-jdk-slim docker image was to install fontconfig

and to add --add-exports java.desktop/sun.font=ALL-UNNAMED to the jvm parameters. E.g.:

ENV JAVA_OPTS="-server --add-exports java.desktop/sun.font=ALL-UNNAMED"

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS /app.jar" ]

Upvotes: 2

Donatello
Donatello

Reputation: 3745

As a workaround, we moved to Amazon Coretto 11 which is currently based on following version.

$ java -version
openjdk version "11.0.9.1" 2020-11-04 LTS
OpenJDK Runtime Environment Corretto-11.0.9.12.1 (build 11.0.9.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.9.12.1 (build 11.0.9.1+12-LTS, mixed mode)

No errors.

Upvotes: 2

Related Questions