Unix服务器执行mvn test出现异常,非应用问题求排查方向
问题排查建议
环境信息
Unix, Java 11, Spring Boot 2.6.9, Maven 3.8.6
问题现象
在Unix服务器上执行mvn test时,无论是数据源相关测试还是空测试方法,都会抛出异常:
数据源测试报错日志
[INFO] Scanning for projects... [INFO] [INFO] ------------------< com.example:FB_FE_020_SD_08025 >------------------- [INFO] Building FB_FE_020_SD_08025 1.0 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ FB_FE_020_SD_08025 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Using 'UTF-8' encoding to copy filtered properties files. [INFO] Copying 1 resource [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ FB_FE_020_SD_08025 --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ FB_FE_020_SD_08025 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Using 'UTF-8' encoding to copy filtered properties files. [INFO] Copying 3 resources [INFO] [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ FB_FE_020_SD_08025 --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ FB_FE_020_SD_08025 --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- java.lang.ArrayIndexOutOfBoundsException: Index 112 out of bounds for length 100 at org.fusesource.jansi.io.AnsiOutputStream.write(AnsiOutputStream.java:196) at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:137) at java.base/java.io.PrintStream.write(PrintStream.java:559) at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233) at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:303) at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281) at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:208) at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120) at java.base/java.io.PrintStream.write(PrintStream.java:605) at java.base/java.io.PrintStream.print(PrintStream.java:745) at java.base/java.io.PrintStream.println(PrintStream.java:882) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:414) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
空测试方法代码
@Test void test(){ }
空测试方法报错日志
[INFO] Scanning for projects... [INFO] [INFO] ------------------< com.woorifis:FB_FE_020_SD_08025 >------------------- [INFO] Building FB_FE_020_SD_08025 1.0 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ FB_FE_020_SD_08025 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Using 'UTF-8' encoding to copy filtered properties files. [INFO] Copying 1 resource [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ FB_FE_020_SD_08025 --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ FB_FE_020_SD_08025 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Using 'UTF-8' encoding to copy filtered properties files. [INFO] Copying 3 resources [INFO] [INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ FB_FE_020_SD_08025 --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /app/sechul/peb-klid-project/peb-klid-project/FB_FE_020_SD_08025/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ FB_FE_020_SD_08025 --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- java.lang.NumberFormatException: For input string: "1;[[[[[[" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.base/java.lang.Integer.parseInt(Integer.java:654) at java.base/java.lang.Integer.valueOf(Integer.java:985) at org.fusesource.jansi.io.AnsiOutputStream.write(AnsiOutputStream.java:199) at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:137) at java.base/java.io.PrintStream.write(PrintStream.java:559) at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233) at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:303) at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281) at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:208) at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120) at java.base/java.io.PrintStream.write(PrintStream.java:605) at java.base/java.io.PrintStream.print(PrintStream.java:745) at java.base/java.io.PrintStream.println(PrintStream.java:882) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:414) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
排查方向
- 检查Jansi版本兼容性:异常来自
org.fusesource.jansi.io.AnsiOutputStream,这是Maven依赖的Jansi库,可能版本和Java 11/Unix环境不兼容。尝试在项目pom.xml中显式指定兼容版本:<dependency> <groupId>org.fusesource.jansi</groupId> <artifactId>jansi</artifactId> <version>2.4.0</version> </dependency> - 禁用Maven的ANSI颜色输出:Unix终端的ANSI编码可能存在问题,执行测试时添加参数关闭颜色:
mvn test -Dstyle.color=never,或者在settings.xml中全局配置:<settings> <profiles> <profile> <id>no-color</id> <properties> <style.color>never</style.color> </properties> </profile> </profiles> <activeProfiles> <activeProfile>no-color</activeProfile> </activeProfiles> </settings> - 升级Maven Surefire插件:当前使用的2.22.2版本较老,尝试升级到兼容Spring Boot 2.6.x的版本,比如3.0.0-M7:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> </plugin> </plugins> </build> - 检查服务器环境变量:查看
TERM等终端相关环境变量是否异常,临时设置TERM=xterm后重新执行测试。 - 清理Maven缓存:执行
mvn clean install -U清理本地仓库缓存,重新下载依赖,避免依赖文件损坏。
内容的提问来源于stack exchange,提问作者koreanDev
相关产品推荐
相关产品推荐

