如何以Java Modules方式运行Spring Boot构建的.jar文件?
如何以Java Modules方式运行Spring Boot Maven插件构建的Jar包?
问题背景
我基于最新Java版本创建了一个简单的Spring Boot应用,希望以Java Modules方式运行它。
已编写的代码文件
Main类
package org.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Main { public static void main(final String[] args) { System.out.println("Module: " + Main.class.getModule()); SpringApplication.run(Main.class, args); } }
module-info.java模块描述文件
module spring.jpms { requires spring.core; requires spring.boot; requires spring.boot.autoconfigure; requires spring.context; requires spring.beans; opens org.example to spring.core, spring.beans, spring.context; }
不同运行方式的结果
- 通过IDE生成的带模块路径的命令运行Main类时,程序正常执行,能正确打印应用模块名称:
Module: module spring.jpms ...
- 但使用
mvn spring-boot:run命令或者java -jar <target>.jar命令运行时,程序以类路径模式执行,模块名称显示为"unnamed":
... Module: unnamed module @7923f745 ...
核心疑问
有没有办法以Java Modules方式运行Spring Boot Maven插件构建的Jar包,也就是通过module-path来加载相关Jar文件?
内容的提问来源于stack exchange,提问作者Alexey Gavrilov
相关产品推荐
相关产品推荐

