Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分支上的stackmap帧不一致-Java8 Maven单元测试_Java_Maven_Unit Testing_Javassist_Powermockito - Fatal编程技术网

分支上的stackmap帧不一致-Java8 Maven单元测试

分支上的stackmap帧不一致-Java8 Maven单元测试,java,maven,unit-testing,javassist,powermockito,Java,Maven,Unit Testing,Javassist,Powermockito,首先我想说的是,我读了很多关于这个问题的书,但我没有找到任何解决办法 我有一些单元测试类,其中我对另一个类使用mockstatic方法。然后,当我运行测试时,它抛出“分支处的堆栈映射帧不一致…”错误 我尝试了所有为我所知的方法,例如-XX:-UseSplitVerifier或-noverify-params添加到maven surefire插件中,但没有一个可以正常工作。我一直处于同一种状态 我试图改变PowerMock的版本——旧的和最新的——没有任何改变 我使用图书馆: PowerMocki

首先我想说的是,我读了很多关于这个问题的书,但我没有找到任何解决办法

我有一些单元测试类,其中我对另一个类使用mockstatic方法。然后,当我运行测试时,它抛出“分支处的堆栈映射帧不一致…”错误

我尝试了所有为我所知的方法,例如-XX:-UseSplitVerifier或-noverify-params添加到maven surefire插件中,但没有一个可以正常工作。我一直处于同一种状态

我试图改变PowerMock的版本——旧的和最新的——没有任何改变

我使用图书馆: PowerMockito 1.62(使用Javassist 3.19.0-GA版本) Java 1.8 Maven 3.2.5

请让我知道,在Java8+中有没有有效的解决方案来避免这个问题


谢谢你的帮助

字节码操作工具需要更新它们更改的代码的堆栈映射帧。否则,将在您的案例中发生时抛出一个
验证错误。Java 8不再支持通过要求旧的验证器(
-XX:-UseSplitVerifier
)来禁用堆栈映射帧的验证


我假设您在Javassist中发现了一个bug,它知道堆栈映射帧,并且可能错误地对它们进行了编辑。尝试更新到库的名称。如果这不起作用,请创建错误的复制并归档错误。

-XX:-UseSplitVerifier
不再适用于Java 8。唯一的解决方案是将工具更新为具有正确stackmap支持的版本。有十年的时间…你使用哪个版本的maven surefire插件?首先是2.18.1,然后我把它改成了最后一个版本-2.19.1。没有什么变化。