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