Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单元测试 -- IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org.powe...

单元测试 -- IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org.powe...

作者头像
None_Ling
发布于 2021-11-24 07:19:26
发布于 2021-11-24 07:19:26
2.2K00
代码可运行
举报
文章被收录于专栏:Android相关Android相关
运行总次数:0
代码可运行

背景

在运行Android单元测试的过程中遇到了下面问题,提示Mock失败:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException

    at org.objenesis.instantiator.sun.SunReflectionFactoryHelper.newConstructorForSerialization(SunReflectionFactoryHelper.java:54)
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.<init>(SunReflectionFactoryInstantiator.java:41)
    at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:67)
    at org.objenesis.ObjenesisBase.getInstantiatorOf(ObjenesisBase.java:94)
    at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:259)
    at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.getPowerMockTestListenersLoadedByASpecificClassLoader(AbstractTestSuiteChunkerImpl.java:95)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:174)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:48)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:108)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:71)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:36)
    at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.objenesis.instantiator.sun.SunReflectionFactoryHelper.newConstructorForSerialization(SunReflectionFactoryHelper.java:44)
    ... 26 more
Caused by: java.lang.IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org.powermock.core.classloader.MockClassLoader @429bd883 cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:262)
    at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:206)
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:89)
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:79)
    ... 31 more

而从Stackoverflow上查找,说是通过PowerMockIgnore忽略掉reflect可以通过,但是Ignore后,同样无法运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@PowerMockIgnore("jdk.internal.reflect.*")

MockClassLoader cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl

问题解决方案

其实本质原因是因为JDK版本的问题,需要在Configuration中把JRE换成1.8即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/9/26 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot项目单元测试报错NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
因为 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
JavaEdge
2021/02/23
1.6K0
SpringBoot项目单元测试报错NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
【已解决】Flink连接JDBC报错 org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
Flink1.13.6 MySQL5.7.27 JDK8 Hadoop3.1.4 集成环境Idea2020
火之高兴
2024/07/25
6130
【已解决】Flink连接JDBC报错 org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
单元测试添加运行参数的maven插件
这里我们可以手动在idea运行启动配置,Run/Debug Configurations的窗口中
阿超
2023/12/16
5870
Gradle 6 Junit 5 测试错误
在使用 Gradle 进行 build 的时候运行测试,提示 build 不能完成,测试不能进行。
HoneyMoose
2020/03/31
1.2K0
Jdk 9 更新导致 Eclipse 启动问题
~/Documents/workspace/.metadata$ cat .log !SESSION 2017-12-01 19:15:35.976 ----------------------------------------------- eclipse.buildId=4.6.3.M20170301-0400 java.version=9 java.vendor=Oracle Corporation BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=zh_TW Framework arguments: -product org.eclipse.epp.package.jee.product -keyring /Users/jack/.eclipse_keyring Command-line arguments: -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.jee.product -keyring /Users/jack/.eclipse_keyring
一个会写诗的程序员
2018/08/17
5500
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 问题处理
1.首先看到的报错信息org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; 怀疑是项目配置的链接数据库的地址或者用户名, 密码错误导致,后仔细核查数据库ip ,端口号,数据库用户名,密码均未发现异常。 2.考虑到1中未排查出异常,故继续往下找,发现javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target,查询了一下错误信息的意义,发现这个应该是缺少认证证书的问题,但是连接数据库并不是通过https连接,怎么会触发证书认证的情况?可以错误日志也没有再提供其他的方向了,这个时候跟程序发现报了mysql的08001的错误码,查询得知代表的是数据库连接时区配置问题,再次检查时区配置,并按社区小伙伴提供的时区配置后问题仍然没有解决。 3.基于2中缺少证书的问题,给自己的tomcat安装了认证证书,但是问题仍然存在 4.问题再次回到1,检查数据库连接,发现原来的数据库连接有参数userSSL=true,这个参数是过去到现在一直存在的,查询参数意义发现如果这个参数开启,需要应用端和服务端同时配置证书,查看mysql服务端
六月的雨在Tencent
2024/03/28
3420
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 问题处理
junit4整合PowerMockito进行单元测试
所以我们在单测中,往往会使用mock的方式对这些代码做一个数据的模拟,从而达到对代码进行测试的一个目的。
半月无霜
2023/10/18
1.4K0
junit4整合PowerMockito进行单元测试
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate() or executeLargeUpdate().
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate() or executeLargeUpdate().
一个会写诗的程序员
2018/08/17
2.2K0
Hmaster无法启动
启动hbase时问题列表: 1 查看hbase-hadoop-master-ubuntu118.log,发现其中的错误为 2012-09-02 22:59:58,099 INFO org.apache.hadoop.hbase.ipc.HBaseRpcMetrics: Initializing RPC Metrics with hostName=HMaster, port=60000 2012-09-02 22:59:58,217 ERROR org.apache.hadoop.hbase.master.H
闵开慧
2018/03/30
4.7K0
SpringBoot启动项目报错:java.lang.UnsatisfiedLinkError: D:\files\software\jdk-15.0.1\jdk-17.0.3.1\bin\tcnat
在网上查了之后有一个说是决定考与tomcat位数不一致: 原贴地址:https://www.cnblogs.com/yuxiaole/p/9247610.html
愷龍
2024/01/28
3474
SpringBoot启动项目报错:java.lang.UnsatisfiedLinkError: D:\files\software\jdk-15.0.1\jdk-17.0.3.1\bin\tcnat
解决报错:Could not set property 'id' of 'class com.north.domain.Book' with value '1787299433834786818' C
捞月亮的小北
2024/05/07
5050
解决报错:Could not set property 'id' of 'class com.north.domain.Book' with value '1787299433834786818' C
一次org.springframework.jdbc.BadSqlGrammarException ### Error querying database Cause: com.mysql.jdbc.
因为在表设计中有一个商品描述字段被设置为desc,但desc是mysql中的关键字,如select id,name,desc,price from product;这条sql语句在查询时的sql语句解析会和期望的不一样,导致出现问题。因为平时在写java代码的时候很自然的会将描述变量设置为desc,在设计表字段时也没有多想,忘记和忽略了desc为mysql中的关键字,酿成此问题。
翎野君
2023/05/12
6900
idea 安装最新版本的时候,启动失败
-------------------------因为电脑之前装过 17版本 的 现在安装了19版本,17没有卸载,19的会默认集成17的一些配置
凯哥Java
2022/12/16
1K0
idea 安装最新版本的时候,启动失败
Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
2017.3.11 问题找到了,原来 Hive2需要hive元数据库初始化
程裕强
2022/05/06
5240
java10下编译lombok注解的代码
本文主要研究下在带有lombok(1.16.20版本)注解的代码在java10下的编译问题。
code4it
2018/09/17
1.3K0
"Connection refused" when syncing Maven project in 2021.1 : java.rmi.ConnectException: Connection...
settings—》Build,Execution,Deployment—》Build Tools—》Maven—》Importing—》JDK for importer选择你安装的JDK版本
一个会写诗的程序员
2021/07/19
1.9K0
"Connection refused" when syncing Maven project in 2021.1 : java.rmi.ConnectException: Connection...
使用PowerMockito如何对私有方法进行单元测试
在上一篇文章中,讲解了公共方法调用私有方法的测试,我们只想对公共方法进行验证测试,私有方法进行mock即可
半月无霜
2024/07/16
9390
使用openjdk9-alpine运行springboot2
本文主要研究怎么在docker的java9镜像上运行springboot2并精简jdk.
code4it
2018/09/17
1.9K0
IDEA 2021.2 启动报错
方案二: 请参考我的另一篇博文的解决方案: https://blog.csdn.net/qq_44866828/article/details/118991037
猫头虎
2024/04/07
2170
IDEA 2021.2 启动报错
SpringBootTest 和PowerMocker
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135408.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/05
5100
推荐阅读
相关推荐
SpringBoot项目单元测试报错NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验