首页 > 解决方案 > JDK 11 + Solaris 64 位问题:- ClassCastException:类 sun.font.CompositeFont 不能转换为类 sun.font.PhysicalFont

问题描述

线程“主”java.lang.ClassCastException 中的异常:类 sun.font.CompositeFont 无法转换为类 sun.font.PhysicalFont(sun.font.CompositeFont 和 sun.font.PhysicalFont 位于加载程序的模块 java.desktop 'bootstrap ') 在 solaris sparc 64 位上使用 JAVA 11。JDK版本:-- 11.0.2

在 Solaris Sparc 64 位上使用 JDK 11.0.2 运行我们的应用程序时,我们遇到了这个异常:-

Exception in thread "main" 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.CompositeFont.doDeferredInitialisation(CompositeFont.java:287)
        at java.desktop/sun.font.CompositeFont.getSlotFont(CompositeFont.java:376)
        at java.desktop/sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:80)
        at java.desktop/sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:95)
        at java.desktop/sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:360)
        at java.desktop/sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:351)
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:303)
        at java.desktop/sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1231)
        at java.desktop/javax.swing.JComponent.getFontMetrics(JComponent.java:1646)
        at java.desktop/javax.swing.plaf.basic.BasicGraphicsUtils.getPreferredButtonSize(BasicGraphicsUtils.java:351)
        at java.desktop/javax.swing.plaf.basic.BasicButtonUI.getPreferredSize(BasicButtonUI.java:474)
        at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)

int w = Math.max(74, toStartButton.getPreferredSize().width+2);

根据这个 JDK 错误 ID 链接:-- https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8132850 它在 JDK 8 和 JDK 9 中得到解决,但我们仍然在 JDK 11 上遇到这个问题。我仔细检查了 CompositeFont.java 类。如解决方案中所述,条件被包围在 try-catch 块中,但仍然无法正常工作。

请帮忙。

引发了另一个 SO 问题:- OpenJDK 11 java.lang.ClassCastException: class sun.font.CompositeFont cannot be cast to class sun.font.PhysicalFont

标签: javasolarisjava-11

解决方案


推荐阅读