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

Ubuntu下使用Maven构建ANTLR4报package is not visible错误如何解决

问题根因

该报错是JDK 9及以上版本引入的Java平台模块系统(JPMS)的访问限制导致的。com.sun.tools.javac相关包属于JDK内部的jdk.compiler模块,默认不对外暴露给非模块化的普通Java项目调用。你Windows环境使用的是无模块系统限制的JDK 8,因此可以正常构建,Ubuntu环境使用的是JDK 9+版本,因此触发访问限制报错。

修复方案

方案1:切换构建用JDK为JDK 8(最稳妥,兼容性最高)

  • 执行如下命令安装OpenJDK 8:
    sudo apt install openjdk-8-jdk
    
  • 切换系统默认JDK版本,依次执行以下两条命令,在弹出的选择列表中选中JDK 8对应的条目即可:
    sudo update-alternatives --config java
    sudo update-alternatives --config javac
    
  • 切换完成后重新执行mvn install -DskipTests即可正常构建。

方案2:修改Maven编译配置适配高版本JDK

如果必须使用JDK 9+版本构建,可以修改项目根目录下的pom.xml文件,找到maven-compiler-plugin的配置节点,添加模块导出参数:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <compilerArgs>
      <arg>--add-exports</arg>
      <arg>jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
      <arg>--add-exports</arg>
      <arg>jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
      <!-- 若后续有其他同类型javac包报错,按照以上格式继续添加对应导出规则即可 -->
    </compilerArgs>
  </configuration>
</plugin>

修改保存后重新执行构建命令即可。

方案3:临时在命令行传递编译参数

如果不想修改项目的pom.xml文件,直接执行以下带参数的构建命令即可:

mvn install -DskipTests \
  -Dmaven.compiler.args=--add-exports,jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED,--add-exports,jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED

内容的提问来源于stack exchange,提问作者Ivan Kochurkin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:03