Groovy - 警告:发生了非法的反射访问操作

时间:2017-12-22 04:15:39

标签: java groovy

我对java和groovy都很陌生。我在我的Windows 10笔记本电脑(64位)上安装了groovy 3.0,当试图运行groovy时收到以下警告:

>groovy -v
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/C:/groovy-3.0.0-alpha-1/lib/groovy-3.0.0-alpha-1.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
Groovy Version: 3.0.0-alpha-1 JVM: 9.0.1 Vendor: Oracle Corporation OS: Windows 10

java版本是:

java --version
java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

任何帮助解决此问题。

7 个答案:

答案 0 :(得分:7)

对我来说这不仅仅是一个'警告':我无法使用当前的JVM 9运行Groovy脚本(在macOS上),更不用说10.解决方法(直到Groovy的兼容版本可用)才能安装jenv和早期版本的Java,因此您可以在需要时进行切换。

答案 1 :(得分:2)

要禁用警告,可以将--add-opens传递给JVM,请参阅详细信息here。不幸的是,Groovy需要打开很多模块/包,请参见commitsource)(当前已还原)。刚刚使用AdoptOpenJDK 11进行了测试。

答案 2 :(得分:2)

向您的pom添加groovy版本:

        <groovy.version>3.0.4</groovy.version>

答案 3 :(得分:1)

尽管我的环境是Linux,但在几天后在Grails环境上设置Groovy时遇到了麻烦,我觉得我知道答案了:现在使用JDK 8。我不喜欢JDK 9,我认为它太落后了,所以我尝试了JDK 11,这使情况变得更糟,导致实际崩溃。看来Groovy / Grails在Java版本兼容性方面严重落后。

一旦新Groovy发布(据说将于今年年底),那么也可以使用更新的JDK。

答案 4 :(得分:0)

使用Java 8,但是,如果Java版本必须为9或>,则也需要更新groovy版本。

我正在运行groovy 2.2.1,它只能在Java版本8之前工作

答案 5 :(得分:0)

JAVA_HOME设置为版本8 JRE为我解决了这个问题:

#! /usr/bin/env -S JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre groovy
println "hello world"

答案 6 :(得分:0)

就我而言,这是因为我使用的是带有 groovy 的 JUNIT 5,但我发现最新支持的是 JUNIT 4.13