在执行任意mvn命令时,我会在日志的开头收到以下警告:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
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
不幸的是,这些警告有时会导致运行时出错,并中断我的maven命令执行。有谁知道如何解决这个问题,并摆脱这些警告?
我的maven版本:
Apache Maven 3.5.2
Maven home: /usr/share/maven
Java version: 11.0.2, vendor: Azul Systems, Inc.
Java home: /usr/lib/jvm/zulu-11-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-47-generic", arch: "amd64", family: "unix"
7条答案
按热度按时间iyfjxgzm1#
我最好的猜测是
guice
版本与Java 11不兼容。btqmn9zl2#
我正在使用Debian,下面的命令为我删除了这个警告。
我也在使用OpenJDK 11。
运行最后一个命令时,您应该选择maven版本3.6.3。
之后,警告将被删除。
enyaitl33#
正如JF Meier提到的here,我的guice版本与Java 11不兼容。用sdkman重新安装maven解决了这个问题。
swvgeqrz4#
如果您使用的是自定义版本的Maven或Ubuntu WSL,那么请删除Maven,从官方网站下载并install它。
例如,如果你有WSL,假设你有一个
/c/tools
目录:68bkxrlz5#
即使是最近的Maven发行版,我也遇到了这个问题。打包的Mint版本似乎重用了 libguice-java 包,而不是使用 *guice-4.2.1-no_aop.jar。
所以从Maven站点安装二进制文件解决了这个问题。
von4xj4u6#
我最近才遇到这个问题,在我的情况下,我使用的是旧版本的Spring,所以我改变了这个
到这个
对我的案子很有效
ttcibm8c7#
Guice刚刚发布了一个新版本,v5.0.1。升级到这个版本应该可以解决这个问题,而不必将Java版本从11降级。
在guice的github上有一个issue完全相同的问题。