You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenJDK 1.8执行Maven编译时--illegal-access选项报错溯源

问题分析与解决

核心原因

--illegal-access=permit是Java 9及更高版本引入的JVM参数,用于控制对内部API的访问权限,而你的构建使用的是Java 8,该版本完全不支持这个参数,因此启动JVM时会报错。

一、--illegal-access=permit的可能来源

这个参数大概率是从以下几个地方混入的:

  • 环境变量:检查你的MAVEN_OPTS或JAVA_OPTS环境变量,可能之前使用Java 17时添加了该参数,切换到Java 8后未清理。执行以下命令查看:
    echo $MAVEN_OPTS
    echo $JAVA_OPTS
    
  • Maven全局配置:查看Maven的settings.xml文件(通常在~/.m2/settings.xml或/etc/maven/settings.xml),检查是否在<configuration>节点下的argLine或其他参数配置中加入了该选项。
  • 项目POM配置:检查项目的pom.xml,重点看maven-compiler-plugin、maven-surefire-plugin等插件的<argLine>配置,是否硬编码了这个JVM参数。
  • IDE运行配置:如果是通过IDE执行Maven命令,检查IDE的Maven运行配置模板或当前项目的运行配置,是否添加了该参数。

二、OpenJDK 17是否会造成干扰

系统中同时安装Java 17本身不会直接导致这个问题,但如果存在以下情况可能间接引发错误:

  • 之前使用Java 17构建时,在环境变量或Maven配置中添加了--illegal-access=permit参数,切换到Java 8后未移除这些配置。
  • JAVA_HOME环境变量错误指向Java 17,但从你的报错信息看,Maven已经调用了Java 8的可执行文件,所以这种情况可以排除。

解决步骤

  1. 清理环境变量:如果MAVEN_OPTS或JAVA_OPTS包含--illegal-access=permit,直接从对应的shell配置文件(如.bashrc、.zshrc)中删除该参数,然后重启终端生效。
  2. 检查并修正Maven配置:在settings.xml和项目pom.xml中查找并移除所有包含--illegal-access=permit的配置项。
  3. 确认JAVA_HOME指向正确:执行echo $JAVA_HOME,确保输出是Java 8的安装路径(如/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.422.b05-2.el8.x86_64)。

内容的提问来源于stack exchange,提问作者Jo Vanmont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:01:02