当我尝试在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应用程序