私が構築しようとしていますオープンソースプロジェクトパッケージは、そのモジュールによってエクスポートされていないので、私はリフレクションを使用してアクセスする必要がありますが、私はできませんいくつかのファイルがありますJavaの9に対しての。私は、引数を使用して、名前のモジュールにパッケージをエクスポートします--add-exports
。
私は、環境変数に次の引数を追加しました_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
私は(今日のような)最新のJDK 9ビルドを使用しています:
C:\controlsfx>java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+175)
Java HotSpot(TM) 64-Bit Server VM (build 9+175, mixed mode)
ここで私はプロジェクトをビルドしようとする出力は次のようになります。
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のを実行するプロセスに追加されません(正しいものであるように見える)、追加のフラグのように見えます。その表示はおよそを知らせるメッセージがある--illegal-access
のみで利用可能である、java
ではありません、javac
。
Javaの9で作業する場合、時々 、右の場所に引数を取得するために厳しいものになることができます。Gradleのための本かもしれないのヘルプ。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加