运行jcstress-samples时遇NullPointerException:META-INF/TestList未生成
jcstress运行时因META-INF/TestList缺失导致NullPointerException的解决办法
问题现象
克隆jcstress仓库后执行官方文档命令:
mvn clean verify -pl jcstress-samples -am java -jar jcstress-samples/target/jcstress.jar
第二条命令立即抛出NullPointerException,根源是META-INF/TestList文件未生成,报错堆栈:
Exception in thread "main" java.lang.NullPointerException at java.base/java.io.Reader.<init>(Reader.java:168) at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:89) at org.openjdk.jcstress.infra.runners.TestList.getTests(TestList.java:51) at org.openjdk.jcstress.infra.runners.TestList.tests(TestList.java:104) at org.openjdk.jcstress.JCStress.getTests(JCStress.java:222) at org.openjdk.jcstress.JCStress.getConfigs(JCStress.java:99) at org.openjdk.jcstress.JCStress.run(JCStress.java:59) at org.openjdk.jcstress.Main.main(Main.java:57)
环境信息
- Java版本:
openjdk 23.0.1 2024-10-15 OpenJDK Runtime Environment (build 23.0.1+11-39) OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
- Maven版本:
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec Java version: 23.0.1, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/23.0.1/libexec/openjdk.jdk/Contents/Home Default locale: ru_EE, platform encoding: UTF-8 OS name: "mac os x", version: "15.1.1", arch: "aarch64", family: "mac"
解决办法
1. 强制触发TestList生成插件
检查Maven构建日志,若未看到jcstress-test-plugin执行的日志,手动执行插件生成TestList:
mvn clean verify -pl jcstress-samples -am org.openjdk.jcstress:jcstress-test-plugin:generate-test-list
2. 降级Java版本
JCStress对Java 23的支持可能存在兼容性问题,切换到Java 17或Java 21(LTS版本)后重新构建:
- 可通过
jenv、sdkman等工具切换Java版本 - 切换完成后重新执行原构建命令
3. 手动创建TestList文件
若上述方法无效,手动在jcstress-samples/target/classes/META-INF目录下创建TestList文件,写入要运行的测试类全限定名,示例:
org.openjdk.jcstress.samples.jmm.basic.BasicJMM_01_HappensBefore org.openjdk.jcstress.samples.jmm.basic.BasicJMM_02_Volatile org.openjdk.jcstress.samples.jmm.basic.BasicJMM_03_Synchronized
完成后再执行java -jar jcstress-samples/target/jcstress.jar
内容的提问来源于stack exchange,提问作者yaskovdev
相关产品推荐
相关产品推荐

