调用LookAndFeelFactory.installJideExtension()出现NoClassDefFoundError错误
解决
java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsLookAndFeel错误 针对调用LookAndFeelFactory.installJideExtension()时出现的该错误,以下是可行的解决方向:
1. 确认JDK类型与版本
com.sun.java.swing.plaf.windows.WindowsLookAndFeel是Oracle JDK特有的类,OpenJDK中对应类的路径为sun.swing.plaf.windows.WindowsLookAndFeel。若项目使用OpenJDK,易因类路径不匹配触发错误:
- 切换至Oracle JDK 8或更低版本(JDK9+开始模块化限制更严格);
- 若坚持使用OpenJDK,需检查JIDE版本是否兼容OpenJDK,必要时升级JIDE到适配版本。
2. 处理JDK9+的模块化访问限制
JDK9及以上版本的模块化系统默认禁止访问com.sun.*这类内部API,需在运行时添加VM参数开放访问权限:
Oracle JDK环境使用:
--add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED
OpenJDK环境替换为:
--add-exports java.desktop/sun.swing.plaf.windows=ALL-UNNAMED
在Gradle中可在run任务里配置该参数:
tasks.withType(JavaExec) { jvmArgs '--add-exports', 'java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED' }
3. 验证运行时类路径与依赖配置
- 确保JIDE相关jar包已正确加入运行时类路径(编译通过不代表运行时依赖齐全,检查Gradle的
runtimeOnly或implementation依赖配置); - 清理缓存后重新构建运行,执行
./gradlew clean run尝试直接启动项目。
4. 调整JIDE外观安装逻辑
若上述方案无效,可手动指定系统外观后再安装JIDE扩展,避免自动加载WindowsLookAndFeel:
// 先设置系统默认外观 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 再安装JIDE扩展 LookAndFeelFactory.installJideExtension();
内容的提问来源于stack exchange,提问作者Tanu
相关产品推荐
相关产品推荐

