首页 > 解决方案 > 如何通过将 --patch-module javac 选项传递给我的项目编译器来使 Eclipse 在 JDK 9+ 上编译修补模块?(见图)

问题描述

Eclipse 必须允许这样做,因为来自 JDK 的 javac 允许这样做,而无需我联系 CIA 以获得许可。如果 eclipse 不允许这样做,那么其他 Java IDE 会允许我这样做。最坏的情况我将只使用 emacs 和终端。

截屏: 在此处输入图像描述

标签: javaeclipsejava-9java-11

解决方案


大多数相关信息已经在评论中给出,我主要是用一点背景和一些链接来总结它

首先,Eclipse 不接受java.base 您的源文件夹中命名的文件夹。javac 的多模块模式使用这种布局,但在像 Eclipse 这样的 IDE 中不需要这种模式,因为我们有用于对模块进行分组的项目。特别是 Eclipse 要求每个项目最多包含一个模块。现在您可以自由地 (a) 定义src/main/java/java.base为源文件夹,或 (b) 将其内容向上移动一级(以便包src/main/java像过去一样直接启动)。

其次,对于设置选项,如--patch-module UI 已在 Eclipse 2019-06 中进行了改进,因此我建议升级 Eclipse(如果尚未完成)。然后,您将在Java Build Path 配置对话框中找到一个名为“Module Dependencies”的新选项卡,您可以在其中将项目标记为 patching java.base。(旧版本 Eclipse 的方法是:在要修补的库下方找到一个节点“ Is Modular ”并编辑(双击)其详细信息。此模式在迁移期间仍然支持,但不再推荐) .

第三,用于构建/编译的 Java 构建路径(顾名思义 :))在启动时也应该受到尊重。为了确保编译时和运行时看到相同的选项集,两个对话框(Java Build PathRun as ...)都有一个按钮,用于显示配置选项的文本形式(在构建路径配置中称为 JPMS 选项)。


推荐阅读