如何在Java 11中处理缺少的Swing PLAF类?

9

出于某种原因,我们使用了 com.sun.java.swing.plaf.windows.WindowsComboBoxUI 类,在Java 5.0到Java 8.0的Windows/Linux/Mac OS平台上都能正常使用。

从Java 10和Java 11开始(我们将坚持使用LTS版本),该类对类加载器不可见:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsComboBoxUI
at xxx.YYY.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.java.swing.plaf.windows.WindowsComboBoxUI
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more

我们该如何让它正常工作?

3
非 Windows 平台版本不再包含 Windows LAF,请参见:https://bugs.openjdk.java.net/browse/JDK-6461834。 - Alan Bateman
1个回答

9
我们成功地将代码中的com.sun.java.swing.plaf.windows.WindowsComboBoxUI替换为javax.swing.plaf.basic.BasicComboBoxUI,并且似乎运行良好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接