java 9 和 maven 的 Eclipse 问题
Eclipse issue with java 9 and maven
我安装了 版本: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 项目来测试依赖注入作为纯 Java 来自 eclipse 的项目,但是当我集成Maven 运行从 eclipse 我系统地得到以下错误
Error occurred during initialization of boot
layerjava.lang.module.FindException: Module com.my.module.hello.test
not found
唯一的解决方案是添加 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 source:
jrt:/java.base [0.697s][info][class,load] com.my.module.hello.MyHello
source:
file:/C:/Users/212442540/workspace-training/my-module-prj/my-module/target/classes/
[0.698s][info][class,load]
java.lang.module.ModuleDescriptor$$Lambda/2114889273 source:
java.lang.module.ModuleDescriptor ...
当我删除“--module-path”参数时,此行消失。
注意:Eclipse在编译或编辑过程中是可以正常工作的。查看补全等等..
我也已将 modpath 依赖项添加到我的项目中
强制依赖项目配置
我在项目配置中手动添加了依赖项
所以看起来Eclipse可以编译java 9个模块,但是如果与maven集成就不能编译运行模块。
强制依赖 Configratin 运行
我还手动添加了依赖项
图 1
但 eclipse 继续删除它们。
之前:
图 2
运行eclipse恢复后:
图 3
看来eclipse和maven集成后系统重置了配置。
我可以重现你的问题,它看起来像 M2Eclipse.
的错误
Please report it to Eclipse. Bug 526838 - Eclipse wrong Module dependencies on Run configuration when integrated with maven
作为 解决方法 使用 外部工具配置 而不是 Java应用运行 配置:
- 运行 > 外部工具 > 外部工具配置...
- Select程序然后点击新建启动配置 左上角的图标
输入以下值:
位置:C:\windows\system32\cmd.exe
工作目录:${workspace_loc:/my-module}
参数:
/C java
-p target/classes;../my-module-api/target/classes;../my-module-it/target/classes
-m com.my.module.hello.test/com.my.module.hello.Reflection
点击运行
我安装了 版本: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 项目来测试依赖注入作为纯 Java 来自 eclipse 的项目,但是当我集成Maven 运行从 eclipse 我系统地得到以下错误
Error occurred during initialization of boot layerjava.lang.module.FindException: Module com.my.module.hello.test not found
唯一的解决方案是添加 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 source: jrt:/java.base [0.697s][info][class,load] com.my.module.hello.MyHello source: file:/C:/Users/212442540/workspace-training/my-module-prj/my-module/target/classes/ [0.698s][info][class,load] java.lang.module.ModuleDescriptor$$Lambda/2114889273 source: java.lang.module.ModuleDescriptor ...
当我删除“--module-path”参数时,此行消失。
注意:Eclipse在编译或编辑过程中是可以正常工作的。查看补全等等..
我也已将 modpath 依赖项添加到我的项目中
强制依赖项目配置
我在项目配置中手动添加了依赖项
所以看起来Eclipse可以编译java 9个模块,但是如果与maven集成就不能编译运行模块。
强制依赖 Configratin 运行
我还手动添加了依赖项
但 eclipse 继续删除它们。
之前:
图 2
运行eclipse恢复后:
看来eclipse和maven集成后系统重置了配置。
我可以重现你的问题,它看起来像 M2Eclipse.
的错误Please report it to Eclipse. Bug 526838 - Eclipse wrong Module dependencies on Run configuration when integrated with maven
作为 解决方法 使用 外部工具配置 而不是 Java应用运行 配置:
- 运行 > 外部工具 > 外部工具配置...
- Select程序然后点击新建启动配置 左上角的图标
输入以下值:
位置:C:\windows\system32\cmd.exe
工作目录:${workspace_loc:/my-module}
参数:/C java -p target/classes;../my-module-api/target/classes;../my-module-it/target/classes -m com.my.module.hello.test/com.my.module.hello.Reflection
点击运行