我对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)
任何帮助解决此问题。
答案 0 :(得分:7)
对我来说这不仅仅是一个'警告':我无法使用当前的JVM 9运行Groovy脚本(在macOS上),更不用说10.解决方法(直到Groovy的兼容版本可用)才能安装jenv和早期版本的Java,因此您可以在需要时进行切换。
答案 1 :(得分:2)
要禁用警告,可以将--add-opens
传递给JVM,请参阅详细信息here。不幸的是,Groovy需要打开很多模块/包,请参见commit(source)(当前已还原)。刚刚使用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