亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OpenJDK 11 java.lang.ClassCastException:

OpenJDK 11 java.lang.ClassCastException:

冉冉說 2022-06-08 16:59:28
我在 Linux 上使用 openJDK 11 運行 junit 測試并收到以下錯誤:java.lang.ClassCastException: class sun.font.CompositeFont cannot be cast to class sun.font.PhysicalFont (sun.font.CompositeFont and sun.font.PhysicalFont are in module java.desktop of loader 'bootstrap')    at java.desktop/sun.font.SunFontManager.getDefaultPhysicalFont(SunFontManager.java:1086)    at java.desktop/sun.font.SunFontManager.initialiseDeferredFont(SunFontManager.java:965)    at java.desktop/sun.font.SunFontManager.findOtherDeferredFont(SunFontManager.java:903)    at java.desktop/sun.font.SunFontManager.findDeferredFont(SunFontManager.java:919)    at java.desktop/sun.font.SunFontManager.findFont2D(SunFontManager.java:2120)    at java.desktop/java.awt.Font.getFont2D(Font.java:506)    at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2246)    at java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)    at java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)    at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)    at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)    at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)    at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:658)不確定,但它必須與 /usr/share/fonts 中的字體有關。目前我那里沒有字體。我知道 openJdk11 不再包含字體了。但我不確定該怎么做。
查看完整描述

3 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

似乎 OpenJDK 11 不再包含一些與字體相關的內容,而且您的操作系統目前本身也沒有提供任何內容。

您可以嘗試在您的操作系統中安裝一些與字體相關的軟件包,看看是否能解決問題。

另請參閱https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#JDK-8191522上的發行說明


查看完整回答
反對 回復 2022-06-08
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

在 Ubuntu 18.0.4 LTS 上,以下命令修復了該問題

sudo apt-get install fontconfig


查看完整回答
反對 回復 2022-06-08
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

我認為你必須安裝一些字體,否則在到達這一點之前你會得到一個 NullPointerException 。


這個簡單的程序運行正常嗎,如果沒有安裝字體會失???


import java.awt.*;

public class Fonts

{

     public static void main(String[] args) throws Exception

     {

         Font defaultFont = Font.decode(null);

         System.out.println(defaultFont);

     }

}

我認為問題更多在于您的字體配置不正確,很明顯 getDefaultPhysicalFont() 期望獲得PhysicalFont類型的字體,但實際上獲得的是CompositeFont類型的字體,不清楚為什么會發生這種情況。


嘗試運行


fc-cache -rv *pathoffonts*

例如


fc-cache -rv /usr/share/fonts

當我也使用 Jakarta Poi 添加相同的錯誤時,這似乎對我有用,但是我還沒有得到一致的結果。


查看完整回答
反對 回復 2022-06-08
  • 3 回答
  • 0 關注
  • 390 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號