PowerMock与Mockito在JDK 17下无法运行,求解决方案
解决方案:JDK17下PowerMock/Mockito JUnit4测试初始化失败问题
问题根源
你使用的PowerMock 1.7.4、Mockito 1.10.19都是严重过时的版本,完全不兼容JDK17:
- JDK9+引入的模块化系统(JPMS)限制了私有API的访问,而老版本PowerMock/Mockito依赖Sun/Oracle的私有反射API,这些API在JDK17中被彻底移除。
- 配套的Objenesis版本过旧,无法处理JDK17的实例化逻辑。
可行解决方案
1. 升级到兼容JDK17的依赖版本
这是最根本的解决办法,以下是经过验证的版本组合(支持JUnit4 + JDK17):
Maven依赖示例:
<!-- JUnit 4核心依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- PowerMock JUnit4模块 --> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.9</version> <scope>test</scope> </dependency> <!-- PowerMock与Mockito的桥接依赖 --> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.9</version> <scope>test</scope> </dependency> <!-- Mockito核心库(兼容JDK17) --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>4.3.1</version> <scope>test</scope> </dependency>
Gradle依赖示例:
testImplementation 'junit:junit:4.13.2' testImplementation 'org.powermock:powermock-module-junit4:2.0.9' testImplementation 'org.powermock:powermock-api-mockito2:2.0.9' testImplementation 'org.mockito:mockito-core:4.3.1'
2. 添加JVM参数突破JDK17的反射限制
即使升级依赖,JDK17的强封装机制仍可能阻止PowerMock的反射操作,需添加以下VM参数:
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED
- IDE运行时:在IntelliJ/Eclipse的Run配置中,找到「VM Options」栏粘贴上述参数。
- Maven构建时:在
maven-surefire-plugin中配置参数:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> <configuration> <argLine> --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED </argLine> </configuration> </plugin>
3. 极端情况:降级JDK到8(不推荐)
如果因项目限制无法升级依赖,唯一的妥协方案是将JDK版本降级到8——老版本PowerMock/Mockito仅支持JDK8及以下环境。
内容的提问来源于stack exchange,提问作者Vishalmishra
相关产品推荐
相关产品推荐

