分支上的stackmap帧不一致-Java8 Maven单元测试
首先我想说的是,我读了很多关于这个问题的书,但我没有找到任何解决办法 我有一些单元测试类,其中我对另一个类使用mockstatic方法。然后,当我运行测试时,它抛出“分支处的堆栈映射帧不一致…”错误 我尝试了所有为我所知的方法,例如-XX:-UseSplitVerifier或-noverify-params添加到maven surefire插件中,但没有一个可以正常工作。我一直处于同一种状态 我试图改变PowerMock的版本——旧的和最新的——没有任何改变 我使用图书馆: PowerMockito 1.62(使用Javassist 3.19.0-GA版本) Java 1.8 Maven 3.2.5 请让我知道,在Java8+中有没有有效的解决方案来避免这个问题分支上的stackmap帧不一致-Java8 Maven单元测试,java,maven,unit-testing,javassist,powermockito,Java,Maven,Unit Testing,Javassist,Powermockito,首先我想说的是,我读了很多关于这个问题的书,但我没有找到任何解决办法 我有一些单元测试类,其中我对另一个类使用mockstatic方法。然后,当我运行测试时,它抛出“分支处的堆栈映射帧不一致…”错误 我尝试了所有为我所知的方法,例如-XX:-UseSplitVerifier或-noverify-params添加到maven surefire插件中,但没有一个可以正常工作。我一直处于同一种状态 我试图改变PowerMock的版本——旧的和最新的——没有任何改变 我使用图书馆: PowerMocki
谢谢你的帮助 字节码操作工具需要更新它们更改的代码的堆栈映射帧。否则,将在您的案例中发生时抛出一个
验证错误。Java 8不再支持通过要求旧的验证器(-XX:-UseSplitVerifier
)来禁用堆栈映射帧的验证
我假设您在Javassist中发现了一个bug,它知道堆栈映射帧,并且可能错误地对它们进行了编辑。尝试更新到库的名称。如果这不起作用,请创建错误的复制并归档错误。-XX:-UseSplitVerifier
不再适用于Java 8。唯一的解决方案是将工具更新为具有正确stackmap支持的版本。有十年的时间…你使用哪个版本的maven surefire插件?首先是2.18.1,然后我把它改成了最后一个版本-2.19.1。没有什么变化。