高版本Java中传统WAR项目部署至非嵌入式Tomcat能否应用Java模块?
传统.war项目部署到非嵌入式Tomcat时能否使用Java模块相关特性?
当前普遍认为暂无法实现,具体原因如下:
- Tomcat的启动脚本
catalina.bat或catalina.sh实际是通过Java启动catalina.jar,需要该组件负责加载模块,但目前org.apache.catalina.loader包下的WebappLoader、WebappClassLoader、WebappClassLoaderBase类中均未实现相关逻辑,暂不支持该能力(不排除后续版本更新支持的可能)。 - 开发阶段可以为WAR项目添加
module-info.java,在编码、编译期应用模块化约束,优化WEB-INF/lib下依赖库的组织逻辑,但项目在Tomcat中运行时,模块化的校验规则不会生效。
补充说明:使用嵌入式Tomcat时可正常使用Java模块特性,只需将项目打包为携带全量依赖的jar包,通过
--module-path参数启动即可。
内容的提问来源于stack exchange,提问作者Raster R
相关产品推荐
相关产品推荐

