Groovy编译器无法识别内部枚举/类类型

时间:2014-10-10 08:41:30

标签: groovy

MyTestClass1.groovy:

class MyTestClass1 {
    public static enum MyEnum { a, b }
    public static class MyInnerClass { void a() {} }
}

MyTestClass.groovy:

class MyTestClass {
    void test(MyTestClass1 c) {}
    void test2(MyTestClass1.MyEnum c) {}
    void test3(MyTestClass1.MyInnerClass c) {}
}

groovyc -cp . MyTestClass.groovy无法通过。 test2 / 3被标记为失败,因为编译器不知道类型。 是否有任何技巧可以编译?

1 个答案:

答案 0 :(得分:3)

获得同样错误的唯一方法是编译MyTestClass而不先编译MyTestClass1。这里最简单的解决方案是编译所有:groovyc -cp . MyTestClass*.groovy

$ ls
MyTestClass.groovy  MyTestClass1.groovy
$ groovyc -cp . MyTestClass.groovy  
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
MyTestClass.groovy: 4: unable to resolve class MyTestClass1.MyEnum 
 @ line 4, column 20.
           void test2(MyTestClass1.MyEnum c) {}
                      ^

MyTestClass.groovy: 5: unable to resolve class MyTestClass1.MyInnerClass 
 @ line 5, column 17.
            void test3(MyTestClass1.MyInnerClass c) {}
                   ^

2 errors

$ groovyc -cp . MyTestClass1.groovy
$ groovyc -cp . MyTestClass.groovy 
$ ls
MyTestClass.class  MyTestClass.groovy  MyTestClass1$MyEnum.class  MyTestClass1$MyInnerClass.class  MyTestClass1.class  MyTestClass1.groovy