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应用运行 配置:

  1. 运行 > 外部工具 > 外部工具配置...
  2. Select程序然后点击新建启动配置 左上角的图标
  3. 输入以下值:

    位置: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
    

  4. 点击运行