Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Eclipse在JDK 9+;通过将--patch module javac选项传递给我的项目编译器?(见图)_Java_Eclipse_Java 9_Java 11 - Fatal编程技术网

如何让Eclipse在JDK 9+;通过将--patch module javac选项传递给我的项目编译器?(见图)

如何让Eclipse在JDK 9+;通过将--patch module javac选项传递给我的项目编译器?(见图),java,eclipse,java-9,java-11,Java,Eclipse,Java 9,Java 11,Eclipse必须允许这样做,因为JDK的javac允许这样做,而无需我联系CIA获得许可。如果eclipse不允许这样做,还有什么其他JavaIDE允许我这样做呢。最坏的情况下,我将只使用emacs和terminal 截图: 大部分相关信息已经在评论中给出,我主要是总结一下,并提供一些背景和链接: 首先,Eclipse不接受源文件夹中名为java.base的文件夹。javac的多模块模式使用这种布局,但是在像Eclipse这样的IDE中不需要这种模式,因为我们有用于对模块进行分组的项目。特别是

Eclipse必须允许这样做,因为JDK的javac允许这样做,而无需我联系CIA获得许可。如果eclipse不允许这样做,还有什么其他JavaIDE允许我这样做呢。最坏的情况下,我将只使用emacs和terminal

截图:

大部分相关信息已经在评论中给出,我主要是总结一下,并提供一些背景和链接:

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

其次,对于设置选项,如
--patchmodule
,我建议升级Eclipse(如果还没有升级的话)。然后,您将在“模块依赖项”中找到一个新选项卡,您可以在其中将项目标记为patching
java.base
。(旧版本Eclipse的方法是:在要修补和编辑(双击)其详细信息的库下方找到节点“是模块化的”。在迁移期间仍支持此模式,但不再推荐)


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

用于运行,而不是用于编译。我的问题是在编译时。@EddieBravo这是用于编译和运行的。在Project>Properties:Java构建路径中,选项卡模块依赖项选择
Java.base
模块,然后单击带有…的按钮补丁。。。。顺便说一下,您的屏幕截图显示了
src/main/java
文件夹,其中包含不正确的附加子文件夹
java.base
!中情局正在派遣黑色直升机……谢谢@howlger,但我想你不明白。我试图做的是重新编译
java.lang.StringBuilder
,这就是为什么我需要
java.base
。以下是我在没有eclipse的情况下的做法:
javac--patch module java.base=src-d patches/java.base-src/java.base/java/lang/StringBuilder.java
@EddieBravo,在eclipse和命令行中都可以。如果您将代码放入
java.base
(这不是必需的),
java.base
必须是源文件夹,而不是父文件夹(可能您注意到带有轮廓J的文件图标;这是因为java代码非法位于带有点的源文件夹的子文件夹中)。请注意,
--patch module
不得用于添加其他方法、字段、类等,也不得用于其他破坏API的更改。