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

Groovy编译器无法识别内部枚举/类类型,groovy,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) {}

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被标记为失败,因为编译器不知道类型。
有什么技巧可以编译这个吗?

获得相同错误的唯一方法是编译
MyTestClass
,而不必先编译
MyTestClass1
。这里最简单的解决方案就是编译all:
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

这个例子在带有Groovy插件的Eclipse中运行得很好,但是独立的Groovy编译器不起作用,但是我不知道这些文件的代码依赖关系。我认为Groovy应该首先知道依赖项并编译必要的类。只需编译所有(
***.Groovy
)。或者最好使用maven,gradle,make,younameit。