Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Java 9:将包导出到未命名模块失败_Java_Java 9_Java Platform Module System - Fatal编程技术网

Java 9:将包导出到未命名模块失败

Java 9:将包导出到未命名模块失败,java,java-9,java-platform-module-system,Java,Java 9,Java Platform Module System,我正在尝试基于Java9进行构建。有些文件我需要使用反射来访问,但我不能,因为包不是由它们的模块导出的。我使用参数--addexports将包导出到未命名的模块 我已将以下参数添加到环境变量\u JAVA\u OPTIONS: -Dsun.reflect.debugModuleAccessChecks=true --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED --add-exports=javaf

我正在尝试基于Java9进行构建。有些文件我需要使用反射来访问,但我不能,因为包不是由它们的模块导出的。我使用参数
--addexports
将包导出到未命名的模块

我已将以下参数添加到环境变量
\u JAVA\u OPTIONS

-Dsun.reflect.debugModuleAccessChecks=true 
--add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED
--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED
我正在使用最新的JDK 9版本(截至今天):

以下是我尝试构建项目时的输出:

C:\controlsfx>.\gradlew :controlsfx:build
Picked up _JAVA_OPTIONS: -Dsun.reflect.debugModuleAccessChecks=true --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED --add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
:controlsfx:compileJava
C:\controlsfx\controlsfx\src\main\java\impl\org\controlsfx\behavior\SnapshotViewBehavior.java:60: error: package com.sun.javafx.scene.control.behavior is not visible
import com.sun.javafx.scene.control.behavior.BehaviorBase;
                                   ^
  (package com.sun.javafx.scene.control.behavior is declared in module javafx.controls, which does not export it to the unnamed module)

C:\controlsfx\src\main\java\impl\org\controlsfx\ReflectionUtils.java:3: error: package com.sun.javafx.scene.traversal is not visible
import com.sun.javafx.scene.traversal.ParentTraversalEngine;
                           ^
  (package com.sun.javafx.scene.traversal is declared in module javafx.graphics, which does not export it to the unnamed module)

编译仍然失败,这让我想知道我做错了什么。

看起来您添加的标志(似乎是正确的)并没有添加到编译器中,而是添加到运行Gradle的进程中。这方面的指示是通知您有关
--非法访问的消息,该消息仅在
java
上可用,而不在
javac
上可用

在使用Java9时,有时很难将参数放到正确的位置。对于Gradle.

(注意:我无法编译该项目,但一些有问题的错误(例如,
BehaviorBase
)已通过以下方法清除。)

使用jdk 9 b175和:


这将是很好的部分相关链接再现在这里-外部网站可以离线或改变他们的结构随着时间的推移,不考虑如何做正确的想法在Gradle的核心部分的答案-它被添加作为后续。相关信息是
JAVA选项
没有实现这个技巧,参数需要在正确的位置应用。但也许我错了。如果你的评论得到一些支持,我可以把细节包括在内。你是对的,@Nicolai的回答已经为我指明了正确的方向。注意:编译项目所需的远远不止这些标志;)如何在maven编译器插件中使用?
C:\controlsfx>.\gradlew :controlsfx:build
Picked up _JAVA_OPTIONS: -Dsun.reflect.debugModuleAccessChecks=true --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED --add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
:controlsfx:compileJava
C:\controlsfx\controlsfx\src\main\java\impl\org\controlsfx\behavior\SnapshotViewBehavior.java:60: error: package com.sun.javafx.scene.control.behavior is not visible
import com.sun.javafx.scene.control.behavior.BehaviorBase;
                                   ^
  (package com.sun.javafx.scene.control.behavior is declared in module javafx.controls, which does not export it to the unnamed module)

C:\controlsfx\src\main\java\impl\org\controlsfx\ReflectionUtils.java:3: error: package com.sun.javafx.scene.traversal is not visible
import com.sun.javafx.scene.traversal.ParentTraversalEngine;
                           ^
  (package com.sun.javafx.scene.traversal is declared in module javafx.graphics, which does not export it to the unnamed module)
compileJava {
    options.encoding = "UTF-8"
    options.incremental = true

    options.compilerArgs.addAll([
        "--add-exports",
        "javafx.base/com.sun.javafx.event=ALL-UNNAMED"
    ])  
    options.compilerArgs.addAll([
        "--add-exports",
        "javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED"
    ])  
    options.compilerArgs.addAll([
        "--add-exports",
        "javafx.graphics/com.sun.javafx.scene.traversal=ALL-UNNAMED"
    ])  
}
sourceCompatibility = '9'
targetCompatibility = '9'