无法在alpine linux上使用openjdk 8初始化类sun.awt.X11FontManager

当使用openjdk 8和这个docker镜像时,我得到了这个堆栈跟踪: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 

我可以通过恢复到旧版本的openjdk容器来实现这个function。 这是我的Dockerfile中的FROM语句:

 FROM openjdk:8u121-jre-alpine 

这取代了这个:

 FROM openjdk:8-jre-alpine 

目前相当于更新131。

这里logging了一个错误: https : //bugs.alpinelinux.org/issues/7372

Interesting Posts