gradleを導入したときにWARNINGがでたのでそれの対処方法を備忘録として残しておこうと思いました。
環境情報
OS:Windows10
Java:Java9
gradle:4.3.1
gradleのバージョンを表示させようとすると、以下のように出力されました。
>gradle -v
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/C:/Gradle/gradle-4.3.1/lib/groovy-all-2.4.12.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
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
------------------------------------------------------------
Gradle 4.3.1
------------------------------------------------------------
Build time: 2017-11-08 08:59:45 UTC
Revision: e4f4804807ef7c2829da51877861ff06e07e006d
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 9.0.1 (Oracle Corporation 9.0.1+11)
OS: Windows 10 10.0 amd64
めっちゃwarningが出てる。
これは、JVMのブートストラップによって出力されているらしく、JVM_OPTSに以下の文言を設定すればよいらしい。
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
「%GRADLE_HOME/bin」配下のgradle.batに「set DEFAULT_JVM_OPTS=」というところがあるのでそこに追記してください。
@remこうなっている
set DEFAULT_JVM_OPTS=
@remこっちに変更
set DEFAULT_JVM_OPTS=--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
調べてみた感じJava9から参照できなくなるクラスがあるっぽい。
(Jigsawの導入によりJava APIのnon-publicメンバへのアクセスが許可されなくなった)
publicにしたらどこからでも呼び出せるのが嫌だーってことらしい。
それを無効にするようなオプションらしい。
正直ほとんどわからないので知っている人教えてほしいです。