Quarkus开发模式/实时代码配合JPMS/Java模块无法正常运行?
问题原因
你遇到的是Quarkus开发模式对JPMS的适配缺陷,不属于配置遗漏问题:
- Quarkus初始启动
quarkus:dev时会复用Maven构建阶段解析完成的模块路径配置,所以首次启动可以正常运行 - 热重载触发的增量编译链路是Quarkus独立实现的,目前不会自动将JPMS依赖加入编译模块路径,才会抛出
module not found: java.ws.rs的编译错误 - 生产打包的运行逻辑走标准Maven构建链路,已经完整处理了模块路径声明,所以不会出现报错
临时解决方案
你可以在pom.xml的quarkus-maven-plugin配置中新增编译参数,强制指定热编译阶段的模块路径:
<plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.platform.version}</version> <extensions>true</extensions> <configuration> <compilerArgs> <arg>--module-path</arg> <arg>${project.build.directory}/lib</arg> </compilerArgs> </configuration> </plugin>
修改配置后重启dev模式即可正常触发热重载。
补充说明
目前Quarkus对JPMS的支持优先级较低,开发模式的JPMS适配属于已知的未完成功能,后续版本会逐步迭代支持。如果上面的配置无法适配你的场景,可以暂时关闭热重载功能,或等待官方后续更新。
内容的提问来源于stack exchange,提问作者Serahl
相关产品推荐
相关产品推荐

