首先我想说,我读了很多关于这个问题的文章,但没有找到任何解决方案。
我有一些单元测试类,我在其中对另一个类使用模拟静态方法。然后,当我运行测试时,它会抛出“分支处的堆栈映射帧不一致...”错误。
我尝试了所有我已知的方法,例如-XX:-UseSplitVerifier 或 -noverify 参数添加到 Maven Surefire 插件,但它们都不能正常工作。我一直处于相同的状态。
我尝试更改 PowerMock 的版本 - 较旧的和最新的 - 没有任何改变。
我使用库: PowerMockito 1.62(使用Javassist 3.19.0-GA版本) java 1.8 Maven 3.2.5
请告诉我,在 Java8+ 中是否有任何可行的解决方案来避免此问题?
感谢您的帮助!
最佳答案
字节代码操作工具需要更新它们更改的代码的堆栈映射帧。否则,当您的情况发生时,会抛出 VerifierError
。 Java 8 不再支持通过要求旧 validator (-XX:-UseSplitVerifier
) 来禁用堆栈映射帧的验证。
我假设您发现了 Javassist 中的一个错误,该错误能够识别堆栈映射帧并可能错误地发出它们。尝试更新到the latest version图书馆的。如果这不起作用,请创建错误的再现并提交错误。
关于java - 分支处的堆栈图帧不一致 - Java8 Maven 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38314145/