1

我们有一个 Web 应用程序,它扩展了 Nimbus LaF 库,其中包含用于各种控件的自定义画家。该小程序是针对 JDK 6u27 构建的,并且针对 JRE 6.x 按预期运行,但是在针对 JRE 7u4 运行它时遇到了问题。

我们扩展AbstractRegionPainter了我们的自定义 Painter 类并尝试实例化 a PaintContext,这会导致抛出“class not found”异常。

我们意识到 Nimbus 已被移入javax.swingJava 7,并且com.sun.java.swing.plaf.nimbus.AbstractRegionPainter(我们导入的)现在 extends javax.swing.plaf.nimbus.AbstractRegionPainter,但是 Oracle 似乎没有为PaintContext内部类提供类似的重定向。小程序在调试日志中显示以下内容:

Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/nimbus/AbstractRegionPainter$PaintContext
...
Caused by: java.lang.ClassNotFoundException: com.sun.java.swing.plaf.nimbus.AbstractRegionPainter$PaintContext
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

由于任何扩展的类都AbstractRegionPainter必须提供PaintContext,这似乎是 JRE7u4 中的向后兼容性错误,但如果有人对我们如何修复/解决此问题有任何想法,将不胜感激。

4

0 回答 0