WildFly 25注册嵌入式Derby驱动出现ClassNotFoundException问题求助
WildFly 嵌入式Derby驱动注册NoClassDefFoundError问题原因及解决方案
核心原因
- Derby 10.15.2.0版本存在模块拆分调整:10.15.x及以上版本不再将所有类打包到单一的
derby.jar中,报错提示缺失的org/apache/derby/shared/common/security/SystemPermission类属于独立的derbyshared.jar包,仅引入derby.jar未引入该依赖包,就会导致类加载失败。 org.apache.derby模块的module.xml配置错误:未将所有必需的Derby依赖包声明到资源列表,也没有配置WildFly要求的基础API依赖。- 环境版本不兼容:Derby 10.15.x要求最低运行环境为Java 11,若WildFly 25启动时使用的JDK版本为Java 8,也会触发类加载异常。
修复步骤
- 补充完整Derby依赖包到WildFly的
modules/org/apache/derby/main目录,必须包含以下jar:derby.jarderbyshared.jarderbytools.jar(可选,按需引入)
- 修正
module.xml配置,参考示例如下:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.apache.derby"> <resources> <resource-root path="derby.jar"/> <resource-root path="derbyshared.jar"/> <resource-root path="derbytools.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
- 确认WildFly启动使用的JDK版本为Java 11及以上。
- 重启WildFly后重新执行驱动注册命令即可完成操作。
内容的提问来源于stack exchange,提问作者Stiven
相关产品推荐
相关产品推荐

