JBoss EAP8升级后出现com.sun.security.auth.module.UnixSystem类找不到异常
解决JBoss EAP8中com.sun.security.auth.module.UnixSystem类找不到的问题
核心原因
JBoss EAP8基于Jakarta EE 9+,其模块化类加载器默认限制对JDK内部非公开API(如com.sun.security.auth.module这类sun.*开头的包)的访问——即便JDK本身包含这些类,部署的应用也无法直接加载。
解决方案:修改deployment-structure.xml
在应用的WEB-INF(Web应用)或META-INF(Java EE应用)目录下创建/修改deployment-structure.xml,添加对JDK相关包的访问权限配置:
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <system export="true"> <paths> <!-- 授权应用访问目标类所在的包 --> <path name="com/sun/security/auth/module"/> </paths> </system> </dependencies> </deployment> </jboss-deployment-structure>
补充说明
- 无需针对Windows/Solaris环境单独调整配置,JDK会根据系统环境自动加载对应实现类(Windows为
NTSystem,Solaris为SolarisSystem),只要配置了上述路径,应用就能正常加载适配当前系统的类。 - 注意:sun.*开头的包属于JDK内部API,不同版本可能存在兼容性变动,长期建议替换为
java.security包下的标准API实现认证逻辑,避免依赖内部API带来的潜在风险。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

