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

fgw7neuy  于 2022-11-01  发布在  其他
关注(0)|答案(8)|浏览(365)

我是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)

任何有助于解决此问题的帮助。

dtcbnfnu

dtcbnfnu1#

要禁用警告,您可以将--add-opens传递给JVM,请参阅此处的详细信息。不幸的是,Groovy需要打开 * 大量 * 模块/包,请参阅此(当前恢复的)commit(源代码)。刚刚用AdoptOpenJDK 11测试了这些。

gg0vcinb

gg0vcinb2#

这对我来说不仅仅是一个“警告”:我无法让Groovy脚本在当前的JVM 9(更不用说10)上运行(在macOS上)。解决办法(直到兼容版本的Groovy可用)是安装jenv和早期版本的Java,这样您就可以在需要时切换。

drnojrws

drnojrws3#

虽然我的环境是Linux,但在Grails环境中设置Groovy花费了几天时间之后,我觉得我知道了答案:我现在使用JDK 8。我在摆弄JDK 9,我认为它太落后了,所以我尝试了JDK 11,这使事情更糟,我遇到了真正的崩溃。看起来Groovy / Grails在Java版本兼容性方面严重落后。
一旦新的Groovy将被发布(据说是今年年底),那么更新的JDK也可以使用。

wgxvkvu9

wgxvkvu94#

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


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

println "hello world"
nxagd54h

nxagd54h5#

使用Java8,但是,如果java版本必须是9或〉,您也需要更新groovy版本。
我运行的是groovy 2.2.1,它只能在java版本8之前工作

x0fgdtte

x0fgdtte6#

添加groovy版本到您pom:

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

tpxzln5u7#

在我的例子中,这是因为我使用的是带有groovy的JUNIT5,但我发现最新支持的是JUNIT4.13

fjaof16o

fjaof16o8#

我在Linux Mint 20.1上使用openjdk 11.0.15 2022-04-19和Groovy 2.4.17时遇到了这个问题

WARNING: All illegal access operations will be denied in a future release
Groovy Version: 2.4.17 JVM: 11.0.15 Vendor: Private Build OS: Linux

为了修复它,我安装了Jabba https://github.com/shyiko/jabba
首先,您需要设置要安装的Jabba版本:

export JABBA_VERSION=0.11.2

然后运行curl命令:
第一个
请观看此视频,了解Jabba的功能:
https://www.youtube.com/watch?v=y2kYVCCeIMo

相关问题