配置--patch-module指定metron_core模块提示Unknown module错误如何解决
问题原因
--patch-module 指令仅作用于JVM启动时已加载到模块路径中的模块,你当前仅配置了针对metron_core模块的补丁规则,没有将该模块加入模块路径,JVM无法识别到metron_core模块的存在,因此抛出未知模块警告。
解决方案
- 第一步:在VM参数最前端添加
--module-path配置,指定你存放metron_core jar包的mods目录,让JVM能识别到该模块。 - 第二步:修正
--patch-module metron_core的路径配置,规则要求路径需指向补丁class的根目录,或补丁jar包的完整路径,不能仅指向jar包所在的父目录。
修正后的配置示例:
"vmArgs": "--module-path ${workspaceFolder}/mods --patch-module java.base=${workspaceFolder}/bin_agent --patch-module metron_core=${workspaceFolder}/mods/metron_core@1.0.jar"
如果你的补丁是未打包的编译后class文件,也可以直接指向编译产物目录,省略打包步骤:
"vmArgs": "--module-path ${workspaceFolder}/mods --patch-module java.base=${workspaceFolder}/bin_agent --patch-module metron_core=${workspaceFolder}/bin_test"
验证方法
- 执行下方命令验证模块路径配置是否正确,正常会输出
metron_core@1.0:
# Windows环境用findstr,Linux/macOS环境替换为grep java --module-path ${workspaceFolder}/mods --list-modules | findstr metron_core
- 如果你只是需要正常使用metron_core模块,不需要对原有模块打补丁,可以直接删除
--patch-module metron_core的配置,仅保留--module-path即可。
内容的提问来源于stack exchange,提问作者clankill3r
相关产品推荐
相关产品推荐

