【发布时间】:2018-04-17 00:32:28
【问题描述】:
我安装了版本:Oxygen.1a Release (4.7.1a) Build id:20171005-1200,支持 Java 9。
在 eclipse.ini 上有建议的配置
-vm
C:\Program Files\Java\jdk-9\bin\javaw.exe
--add-modules=ALL-SYSTEM
我已经通过 java 9(java 9 模块化)code 项目开发来测试依赖注入作为来自 Eclipse 的纯 Java 项目,但是当我集成 Maven 运行我的来自 Eclipse 时,我系统地得到以下错误
启动初始化时发生错误 layerjava.lang.module.FindException:模块 com.my.module.hello.test 没找到
唯一的解决方案是添加 VM 参数
--module-path target/classes;../my-module-api/target/classes;../my-module-it/target/classes --module com.my.module.hello.test/com.my.module.hello.Reflection
确实,如果将我在加载过程中可以看到的详细参数添加到 Vm 参数中
... [0.694s][info][class,load] java.lang.NamedPackage 来源: jrt:/java.base [0.697s][info][class,load] com.my.module.hello.MyHello 资源: 文件:/C:/Users/212442540/workspace-training/my-module-prj/my-module/target/classes/ [0.698s][信息][类,负载] java.lang.module.ModuleDescriptor$$Lambda$24/2114889273 来源: java.lang.module.ModuleDescriptor ...
当我删除“--module-path”参数时,这一行就消失了。
注意:Eclipse 能够在编译或编辑过程中正常工作。查看完成等..
我也在我的项目中添加了 modpath 依赖项
强制依赖项目配置
看来 Eclipse 可以编译 java 9 模块,但如果与 maven 集成则无法运行模块。
强制依赖于 Configratin Run 我还手动添加了依赖项 图 1
但 eclipse 会继续删除它们。
之前:
图2
运行 eclipse 后恢复:
如果与 maven 集成,eclipse 似乎会系统地重置配置。
【问题讨论】:
-
那段代码难道不是模块功能的演示吗?它甚至可以在没有这些参数的情况下工作吗?
-
java 命令应该是 java --module-path target/classes;../my-module-api/target/classes;../my-module-it/target/classes --模块 com.my.module.hello.test/com.my.module.hello.Reflection 但我期待 Eclipse 为我完成这项工作
-
您是否通过任何 Eclipse 指令来设置它们,例如 this one?
-
是的..tx ..-vm C:\Program Files\Java\jdk-9\bin\javaw.exe --add-modules=ALL-SYSTEM
-
@eis : 在 Maven 之前是的,现在没有了。
标签: java eclipse maven java-platform-module-system module-path