gpt4 book ai didi

groovy - Gradle:从分支内部调用错误的 方法(invokespecial)

转载 作者:行者123 更新时间:2023-12-02 03:23:03 26 4
gpt4 key购买 nike

当前版本的 java(8u20、7u67)破坏了 gradle\groovy 编译器和运行时兼容性:

:compileTestGroovy FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileTestGroovy'.
> Bad <init> method call from inside of a branch
Exception Details:
Location:
some/MyClass.<init>(Lsome/MyOtherClass;)V @71: invokespecial
Reason:
Error exists in the bytecode
Bytecode:
0x0000000: b800 174d 04bd 0019 5903 2b53 5910 ff12
0x0000010: 05b8 001f 2a5f ab00 0000 0055 0000 0003
0x0000020: f20b c677 0000 0022 0000 9b75 0000 0037
0x0000030: 2cce be6d 0000 0040 5f5a 5903 3212 05b8
0x0000040: 0023 c000 055f 57b7 0026 a700 2b5f 5a57
0x0000050: b700 29a7 0022 5f5a 5903 3212 2bb8 0023
0x0000060: c000 2b5f 57b7 002e a700 0dbb 0030 5912
0x0000070: 32b7 0035 bf57 2ab6 0039 4e2d 2a5f b500
0x0000080: 3b2d 572c 123c 322a 123e b900 4403 0057
0x0000090: b1
Stackmap Table:
full_frame(@56,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
full_frame(@77,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
full_frame(@86,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
full_frame(@107,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
full_frame(@117,{Object[#2],Object[#74],Object[#76]},{Object[#78]})

来自 ZeroTurnaround 的人也注意到了这种行为: http://zeroturnaround.com/forums/topic/verifyerror-bad-method-call-from-inside-of-a-branch/

问题很简单:当我们等待下一版本的 java 中的任何解决方案时,是否有解决此问题的方法?

最佳答案

处理VerifyError最明显的方法是使用-noverify jvm选项。

(假设gradle版本> = 1.12,并且gradle包装器作为可执行bin)

首先,告诉 gradle 使用编译过程的选项(在 build.gradle 中):

compileGroovy {
groovyOptions.forkOptions.jvmArgs = ['-noverify']
}

对于运行时,您还应该传递 jvm 选项:

测试任务:

test {
jvmArgs '-noverify'
}

如果您使用应用程序插件:

applicationDefaultJvmArgs = ["-noverify"]

或者,通过任何其他方式。

就这些了。愉快地等待带有修复的 java 版本:

关于groovy - Gradle:从分支内部调用错误的 <init> 方法(invokespecial),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com