Antlr4 4.13.2 Maven测试执行报错求助(Ubuntu20+OpenJDK11)
Antlr4 4.13.2构建测试时出现NullPointerException的解决指导
问题复现
- 运行环境:Ubuntu 20.04.6 LTS、OpenJDK 11(11.0.25)、Maven 3.9.6
- 操作流程:构建Antlr4 4.13.2源码,执行
mvn compile后运行mvn -X test - 报错情况:4个测试用例(
importTokens、importsCustomLayout等)抛出NullPointerException,报错位置为DefaultMojoExecutionConfigurator.java第44行
可能原因
该NullPointerException源于Antlr4 4.13.2的测试用例在Maven 3.9.x与OpenJDK 11的组合环境中,未正确初始化Mojo执行所需的配置上下文,属于版本兼容性问题。
解决方案
临时规避:跳过失败测试
若需继续从源码构建,可直接跳过报错的测试用例:
mvn -Dtest=!importTokens,!importsCustomLayout test
或直接跳过所有失败测试:
mvn test -DfailIfNoTests=false -DskipTestsOnFailure=true
改用二进制包(匹配你的计划)
- 获取预编译二进制包:下载Antlr4 4.13.2的完整JAR包(antlr-4.13.2-complete.jar)
- 配置环境:
- 将JAR包路径添加到CLASSPATH
- 创建执行脚本
antlr4:#!/bin/bash java -jar /你的JAR包路径/antlr-4.13.2-complete.jar "$@" - 赋予脚本执行权限并加入系统PATH:
chmod +x antlr4 export PATH=/脚本所在目录:$PATH
根本修复:适配Maven版本
若坚持从源码构建,可降级Maven到3.8.x版本(Antlr4 4.13.2发布时Maven 3.9.x尚未广泛适配):
- 卸载当前Maven 3.9.6
- 安装Maven 3.8.8:
wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz tar -xzf apache-maven-3.8.8-bin.tar.gz export PATH=/解压后的Maven路径/bin:$PATH - 重新执行构建测试:
mvn clean compile test
内容的提问来源于stack exchange,提问作者Mark Rostron
相关产品推荐
相关产品推荐

