mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
JIDE 3.6.18's LookAndFeelFactory contains compile-time \`instanceof com.sun.java.swing.plaf.windows.WindowsLookAndFeel\` checks in multiple methods, including a JIDE PropertyChangeListener that fires on every UIManager.setLookAndFeel call. On Linux and macOS JDKs the class is genuinely absent from java.desktop, so the JVM throws NoClassDefFoundError the first time JIDE's dispatch code is executed (during JFrame init and again from JideSplitPane.updateUI on each LAF change). Two complementary fixes: 1. Pass an explicit MetalLookAndFeel instance to the 3-arg installJideExtension(UIDefaults, LookAndFeel, int) overload so JIDE's Metal branch matches first and never falls through to the Windows branch in the normal install path. 2. Add a no-op stub class at com.sun.java.swing.plaf.windows.WindowsLookAndFeel so that the compile-time class reference resolves on non-Windows JDKs. The stub reports isSupportedLookAndFeel = false and is never instantiated - JIDE only uses it for instanceof comparisons against the active LAF, which always return false in our setup. On Windows JDKs the real class in java.desktop is loaded by the platform classloader and shadows this stub.