当我尝试在Java中调用Groovy类时,我得到了以下异常:

线程“main”中的异常java.lang.VerifyError :(类:groovy / runtime / metaclass / java / lang / StringMetaClass,方法:super $ 2 $ invokeMethod signature:(Ljava / lang / Class; Ljava / lang / Object; Ljava / lang / String; [Ljava / lang / Object; ZZ)Ljava / lang / Object;)非法使用非虚函数调用

这是Groovy代码片段

class TestGroovy{
    def testSplit(){
        def orglist = "01,02,03"
        println orglist.split(",")
    }
}

这是Java代码片段 .

public static void main(String[] args) {
     TestGroovy tg = new TestGroovy(); 
     tg.testSplit();
}

任何人都可以对这个问题有所了解吗?提前致谢!


我设置了一个MCVE,但这次我没有重现这个问题 . 它按预期工作 .

以下是MCVE设置Java调用Groovy类的步骤

  • 为Eclipse IDE安装Groovy工具

我正在使用Eclipse Neon Release(4.6.0)

通过帮助▸安装新软件...菜单项打开Eclipse Update管理器以安装Groovy Eclipse插件 . 在此对话框中输入以下URL:

http://dist.springsource.org/snapshot/GRECLIPSE/e4.6

选择:Groovy-Eclipse(必需),然后单击下一步以安装Groovy插件 .

2.创建一个名为CroovyCalledByJava文件的新Groovy项目▸新建▸其他▸Groovy▸Groovy项目

3.通过文件创建名为TestGroovy的新Groovy类▸新建▸其他▸Groovy▸Groovy类

package product.rule 
class TestGroovy {
def testSplit(){
    def orglist = "01,02,03"
    println orglist.split(",")
}

}

  • 创建一个新的Maven项目,通过文件调用JavaCallGroovy▸新增▸其他▸Maven▸Maven项目

将以下依赖项添加到pom.xml文件 .

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>2.4.11</version>
</dependency>
  • 通过右键单击项目来配置Java构建路径,选择“属性”并检查构建路径是否包含CroovyCalledByJava项目

  • 编辑生成的App.java

import product.rule.TestGroovy;
public class App 
{
public static void main( String[] args )
{
    TestGroovy tg = new TestGroovy(); 
    tg.testSplit();
}
}
  • 运行APP和Java应用程序