Не удалось инициализировать класс sun.awt.X11FontManager с использованием openjdk 8 в Alpine Linux

Я получаю эту трассировку стека при использовании openjdk 8 с этим образом докера: openjdk:8-jre-alpine

java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager

at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_131]
at java.lang.Class.forName(Class.java:348) [rt.jar:1.8.0_131]
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82) [rt.jar:1.8.0_131]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_131]
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) [rt.jar:1.8.0_131]
at java.awt.Font.getFont2D(Font.java:491) [rt.jar:1.8.0_131]
at java.awt.Font.getFontName(Font.java:1279) [rt.jar:1.8.0_131]
at java.awt.Font.getFontName(Font.java:1261) [rt.jar:1.8.0_131]

Работает нормально с использованием версии Oracle

Следуйте инструкциям по установке шрифтов dejavu отсюда: https://hub.docker.com/r/neduekwunife/openjdk8-jre-alpine-with-fontconfig/
Я добавил следующую строку в свой Dockerfile:

RUN apk add --update ttf-dejavu && rm -rf /var/cache/apk/*

который теперь дает мне следующую ошибку:

java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libfontmanager.so: Error relocating /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libfontmanager.so: AWTFontDefaultChar: symbol not found

1 ответ

Я смог заставить это работать, вернувшись к более старой версии контейнера openjdk. Вот утверждение FROM в моем Dockerfile:

FROM openjdk:8u121-jre-alpine

который заменил это:

FROM openjdk:8-jre-alpine

который в настоящее время эквивалентен обновлению 131.

Для этого есть ошибка, описанная здесь: https://bugs.alpinelinux.org/issues/7372

Другие вопросы по тегам