java.lang.NoClassDefFoundError:无法使用 OpenJDK 11.0 初始化类 sun.font.SunFontManager

问题描述

自从从 openjdk:11-jdk-slim 从 OpenJDK 8 迁移到 OpenJDK 11.0.9 以来,我们正面临此错误

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)

类似问题已在 RedHat 上注册http://bugzilla.redhat.com/show_bug.cgi?id=1768935

但是,据我所知,我们并没有使用 RedHat 源代码中的 JDK(即使 openjdk-11 项目是由他们构建和打包的,在被 AdoptOpenJDK 项目使用之前......)。

解决方法

作为一种解决方法,我们移至 Amazon Coretto 11,它目前基于以下版本。

$ 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)

没有错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...