如何在 JavaExec 任务中正确添加 --add-opens 到 jvmArgs

Aku*_*urn 24 java reflection arguments gradle

目前我有一个执行运行程序的任务,比如

task runApp(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath

    main = 'com.eonmux.somepackage'

    jvmArgs '-Xmx4096m'
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将 --add-opens 添加到 JVM 参数列表中,以便允许从我的 gradle 包进行反射访问

就像是

task runApp(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath

    main = 'com.eonmux.somepackage'

    jvmArgs '-Xmx4096m','--add-opens java.base/jdk.internal.loader=ALL-UNNAMED'
}
Run Code Online (Sandbox Code Playgroud)

但是,这会出现以下错误,指出命令行选项无法识别

2020-12-09T16:30:56.285-0500 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command 'C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-openj9\bin\java.exe''
2020-12-09T16:30:56.286-0500 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
2020-12-09T16:30:56.360-0500 [ERROR] [system.err] JVMJ9VM007E Command-line option unrecognised: --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
2020-12-09T16:30:56.361-0500 [ERROR] [system.err] Error: Could not create the Java Virtual Machine.
Could not create the Java Virtual Machine.

2020-12-09T16:30:56.362-0500 [ERROR] [system.err] Error: A fatal exception has occurred. Program will exit.
A fatal exception has occurred. Program will exit.

Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为当我打开指示的 Java 路径的命令行并运行时

C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-openj9\bin>java --add-opens

我收到以下消息确认其存在

Error: --add-opens requires modules to be specified
Run Code Online (Sandbox Code Playgroud)

我不是 Gradle 配置专家,所以我希望得到一些帮助。

这是在 Windows 10x64 上使用 IntelliJ IDE 和 Gradle 6.0.1

Jor*_*orn 14

这个问题在评论中得到了回答Jorn Vernee(尽管名字相似,但与我无关),所以我将在这里重复它:

您可能需要将两者作为单独的字符串传递,而不是一个('--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED')。我认为如果将参数字符串中的空格替换为=.