LoginSignup
7
4

More than 5 years have passed since last update.

gradleの導入でワーニング

Posted at

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にしたらどこからでも呼び出せるのが嫌だーってことらしい。

それを無効にするようなオプションらしい。
正直ほとんどわからないので知っている人教えてほしいです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4