【问题标题】:maven: An illegal reflective access operation has occurredmaven:发生了非法的反射访问操作
【发布时间】:2019-04-03 10:02:30
【问题描述】:

在执行任意 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"

【问题讨论】:

    标签: maven


    【解决方案1】:

    我的最佳猜测:您的 guice 版本与 Java 11 不兼容。

    【讨论】:

    • 发现我的 guice 版本与我的 Maven 安装绑定。由于我的发行版源没有更新,最终从 apache.org 下载了 Maven 3.6.2 二进制文件并更新环境以使用它,而不是我系统上的 3.6.0。
    【解决方案2】:

    我正在使用 Debian,下面的命令为我删除了这个警告。
    我也在使用 OpenJDK 11。

    # Download maven 3.6.3
    wget https://www.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -P /tmp
    
    # Untar downloaded file to /opt
    sudo 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。
    之后,警告将被删除。

    【讨论】:

    • 截至 2020 年 10 月 12 日,该指令仍然适用于 Ubuntu 18.04。但是对于 tar xf 也需要 sudo。此解决方案删除了​​警告。
    • 很奇怪,在 Ubuntu 上安装的 Maven 版本,即 3.6.3,表现出这种行为。它必须是使用不同的 JDK 或针对不同的目标编译的。
    【解决方案3】:

    正如 JF Meier 提到的 here,我的 guice 版本与 Java 11 不兼容。使用 sdkman 重新安装 maven 为我解决了这个问题。

    【讨论】:

    • 为什么不接受他的回答,而不是自己创造并接受你的?
    • 我这样做是因为这是解决问题的方法。
    • 您应该接受 JF Meier 的回答,并在此处评论重新安装部分。
    • 他这样做的方式很好……第一个肯定不是答案,只是简单地重申了问题,是的,对情况进行了总结。提问者添加了他为解决问题所做的工作,这在此板上受到鼓励。
    【解决方案4】:

    如果您使用的是自定义版本的 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"
    

    【讨论】:

    • 这就是我的解决方案。其他人都没有在 WSL2 中工作过。
    【解决方案5】:

    即使使用最近的 Maven 发行版,我也遇到了问题。似乎打包的 Mint 版本重用了包 libguice-java 而不是使用 guice-4.2.1-no_aop.jar。

    所以从 Maven 站点安装二进制文件解决了这个问题。

    【讨论】:

    【解决方案6】:

    我最近刚刚遇到了这个问题,就我而言,我使用的是旧版本的 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>
    

    它适用于我的情况

    【讨论】:

      【解决方案7】:

      Guice 刚刚发布了一个新版本,v5.0.1。 升级到这个应该可以解决问题,而无需从 11 降级您的 Java 版本。

      在 guice 的 github 中有一个完全相同的问题的 issue

      【讨论】:

      • -- 不太好,因为从那时起您必须构建和维护它。最好 Apache Maven(而不是从 Ubuntu、Mint 等)安装 Maven 3.6.3。
      猜你喜欢
      • 1970-01-01
      • 2018-02-24
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2021-01-10
      相关资源
      最近更新 更多