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

运行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:47:14