在执行任意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"
答案 0 :(得分:7)
我正在使用Debian,下面的命令为我删除了此警告。
我也在使用OpenJDK 11。
# Download maven 3.6.3
wget https://www-us.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -P /tmp
# Untar to /opt
tar xf /tmp/apache-maven-*.tar.gz -C /opt
# Install the alternative version for the mvn in your system
sudo update-alternatives --install /usr/bin/mvn mvn /opt/apache-maven-3.6.3/bin/mvn 363
# Check if your configuration is ok. You may use your current or the 3.6.3 whenever you wish, running the command below.
sudo update-alternatives --config mvn
运行最终命令,应选择Maven版本3.6.3。
之后,警告将被删除。
答案 1 :(得分:3)
如果您使用的是自定义版本的Maven或Ubuntu WSL,请删除Maven,从官方网站下载并install。
例如,如果您有WSL,并假设您拥有/c/tools
目录:
$ sudo apt-get remove maven
$ cd /c/tools/
$ tar xzvf /c/Users/<USER-NAME>/Downloads/apache-maven-3.6.3-bin.tar.gz
$ echo "PATH=/c/tools/apache-maven-3.6.3/bin:$PATH" >> ~/.profile
$ source ~/.profile
$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /c/tools/apache-maven-3.6.3
Java version: 11.0.8, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-18362-microsoft", arch: "amd64", family: "unix"
答案 2 :(得分:0)
我的最佳猜测:您的guice
版本与Java 11不兼容。
答案 3 :(得分:0)
答案 4 :(得分:0)
即使是最近的Maven发行版,我也遇到了问题。似乎打包的Mint版本重用了 libguice-java 包,而不是使用 guice-4.2.1-no_aop.jar。
因此从Maven站点安装二进制文件解决了该问题。
答案 5 :(得分:0)
我最近才遇到此问题,就我而言,我使用的是旧版的Spring 所以我改变了
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
对此
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
它适用于我的情况
答案 6 :(得分:0)