构建JPMS嵌入式Tomcat服务器时遇jakarta.security.auth.message访问错误
解决方案
1. 修复IllegalAccessError核心问题
错误根源是JPMS模块访问控制机制:jakarta.security.auth.message模块默认没有权限读取org.apache.tomcat.catalina模块,但Tomcat的JASPIC认证实现依赖这个访问权限。
解决方法是在启动命令中添加--add-reads参数,显式允许jakarta.security.auth.message读取org.apache.tomcat.catalina模块:
java --add-reads jakarta.security.auth.message=org.apache.tomcat.catalina --module-path target/lib/ -m my_custom_module/a.b.c.module.tomcat.MainClass
2. 解决SLF4J无提供者警告
日志中的SLF4J警告是因为仅引入了API依赖,未添加具体的日志实现。在pom.xml中添加一个SLF4J实现依赖即可,比如轻量的slf4j-simple:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <scope>runtime</scope> </dependency>
若需要更复杂的日志功能,也可替换为logback-classic等其他实现。
内容的提问来源于stack exchange,提问作者mah454
相关产品推荐
相关产品推荐

