我有一个blackbox
linux机器,它只带有一个字体/usr/lib/fonts/ipag.ttf但它似乎没有正确安装和自定义openjdk 9安装
openjdk安装没有任何字体,但我尝试创建一个字体目录并将此字体复制到其中,但它没有任何效果.
当我运行我的非gui应用程序时,它需要字体才能使用jakarta-poi创建excel电子表格,但它失败了:
Caused by: java.lang.NullPointerException
at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.SunFontManager.(Unknown Source)
at java.desktop/sun.awt.FcFontManager.(Unknown Source)
at java.desktop/sun.awt.X11FontManager.(Unknown Source)
然后我试着跑步
fc-cache -rv /usr/lib/fonts
这报告已安装了字体(虽然fc-list没有返回任何内容)
现在我的应用程序得到了更多,但仍然失败,报告
Caused by: java.lang.NullPointerException
at java.desktop/sun.awt.FcFontManager.getDefaultPlatformFont(Unknown Source)
at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.SunFontManager.(Unknown Source)
at java.desktop/sun.awt.FcFontManager.(Unknown Source)
at java.desktop/sun.awt.X11FontManager.(Unknown Source)
那么我该如何解决这个问题,我不清楚Java应用程序工作所需的最小字体集是什么.我不清楚我是否只需要提供字体或fonts.properties文件,或者该文件仅由Oracle jres而不是OpenJdk使用
我在OpenJdk1.8中遇到了同样的问题,但是从内存中简单地创建一个字体文件夹并将字体放入其中似乎可行,但现在这个openjdk 9版本无效.
我可以将字体复制到机器上,但是我无法运行安装命令来直接将字体安装到机器上.
更新
然后我复制了Oracle jre提供的Lucida字体并放入jre / libs / font并在该文件夹上运行fc-cache -rv它现在可以工作了,为什么ipag.ttf字体不够用呢?
为什么我必须运行fc-cache cant java只需通过在fonts文件夹中找到它们来获取字体.