Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Groovy 格拉德尔:糟糕<;初始化>;来自分支内部的方法调用(invokespecial)_Groovy_Gradle_Verifyerror - Fatal编程技术网

Groovy 格拉德尔:糟糕<;初始化>;来自分支内部的方法调用(invokespecial)

Groovy 格拉德尔:糟糕<;初始化>;来自分支内部的方法调用(invokespecial),groovy,gradle,verifyerror,Groovy,Gradle,Verifyerror,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 Excep

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]})
:compileTestGroovy失败
失败:生成失败,出现异常。
*出了什么问题:
任务“:compileTestGroovy”的执行失败。
>来自分支内部的错误方法调用
例外情况详情:
地点:
some/MyClass.(Lsome/MyOtherClass;)V@71:invokespecial
原因:
字节码中存在错误
字节码:
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
堆栈映射表:
全帧(@56,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
全帧(@77,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
全帧(@86,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
全帧(@107,{UninitializedThis,Object[#74],Object[#76]},{Object[#78],UninitializedThis})
全帧(@117,{Object[#2],Object[#74],Object[#76]},{Object[#78]})
ZeroTurnound的人也注意到了这种行为:


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

处理VerifyError最明显的方法是使用-noverifyJVM选项

(假设gradle版本>=1.12,gradle包装器作为可执行文件箱)

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

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

测试任务:

test {
    jvmArgs '-noverify'
}
如果您使用应用程序插件:

applicationDefaultJvmArgs = ["-noverify"]
或者,通过任何其他方式

就这些了。愉快地等待java版本和修复程序:


    • 构造函数调用super时会发生这种情况


      构造函数上添加
      @CompileStatic
      解决了这个问题。

      这是一个jdk错误&它已在最新的jdk版本7 u72中修复了。

      Arun是正确的。这是一个JDK错误,所以更新到至少7u72应该可以解决它。我遇到了这个问题,在安装了7u72之后,我的构建工作正常。我无法对这个解决方案投足够的赞成票。我的团队中没有其他人有这个问题(他们有不同的1.7JDK),这让人很恼火。更新到u79解决了我的问题。最简单的解决方案。很好!我从jdk1.8.0_20.jdk升级到jdk1.8.0_191.jdk,似乎已经解决了这个问题。
      applicationDefaultJvmArgs = ["-noverify"]