Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在alpine linux上使用openjdk 8初始化类sun.awt.X11FontManager_Java_Docker_Fonts_Openjdk_Alpine - Fatal编程技术网

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

Java 无法在alpine linux上使用openjdk 8初始化类sun.awt.X11FontManager,java,docker,fonts,openjdk,alpine,Java,Docker,Fonts,Openjdk,Alpine,我在使用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.ja

我在使用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字体:
我在Dockerfile中添加了以下行:

RUN apk add --update ttf-dejavu && rm -rf /var/cache/apk/*
FROM openjdk:8u121-jre-alpine
这给了我以下错误:

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容器的旧版本来实现这一点。以下是我的Dockerfile中的FROM语句:

RUN apk add --update ttf-dejavu && rm -rf /var/cache/apk/*
FROM openjdk:8u121-jre-alpine
取代这个的是:

FROM openjdk:8-jre-alpine
目前相当于更新131


这里记录了一个错误:

你救了我一天,杰森,谢谢!看起来这个问题在阿尔卑斯山那边还没有解决。这个问题的错误已经解决了,使用最新的图片现在就可以了。