Groovy代码找不到Java构造函数

Groovy代码找不到Java构造函数,java,groovy,interop,Java,Groovy,Interop,当我在下面的Groovy代码中运行main方法时,我得到一个Groovy.lang.GroovyRuntimeException:找不到匹配的构造函数:com.example.Person(java.lang.String,com.example.Pet)。为什么呢?我使用的是Groovy/Grails工具套件的最新版本 Groovy: package com.example import groovy.transform.TypeChecked @TypeChecked class Tes

当我在下面的Groovy代码中运行
main
方法时,我得到一个
Groovy.lang.GroovyRuntimeException:找不到匹配的构造函数:com.example.Person(java.lang.String,com.example.Pet)
。为什么呢?我使用的是Groovy/Grails工具套件的最新版本

Groovy:

package com.example

import groovy.transform.TypeChecked

@TypeChecked
class Test {
    static main(args) {
        Pet fido = new Pet(name: 'Fido', nickname: 'Scruffy')
        Person dave = new Person('Dave', fido)
    }
}

@TypeChecked
class Pet {
    String name
    String nickname
}
爪哇:


确保按照以下顺序编译和运行:

  • groovycpet.groovy
  • javacperson.java
  • groovyctest.groovy

  • groovy测试

如果遵循上述顺序,它对我的效果与预期一样。在GGTS中,确保按照预期编译/构建项目,以确保构建依赖类。

如前所述,这是一个编译顺序问题。所以我阅读并稍微修改了我的程序。我创建了
Pet.java

public interface Pet {
    public String getName();
    public String getNickname();
}
然后我将Groovy类
Pet
重命名为
PetImpl
,并让它扩展新的
Pet
接口。现在Java代码可以独立于Groovy进行编译,Groovy代码可以编译,一切正常


编辑:我又玩了一些,我发现如果我在Groovy文件中右键单击我的
main
方法并创建一个直接引用main类
com.example.Test
的运行方式配置(Groovy脚本),我就不会再遇到这个问题,不必对我最初发布的代码进行任何更改(即,没有Java
Pet
接口)

public interface Pet {
    public String getName();
    public String getNickname();
}