我正在使用maven和groovy-eclipse-compiler
(版本2.9.2-01),即使构建结束正常,我也会在控制台中获得以下输出:
[INFO]
[INFO] --- maven-compiler-plugin:3.2:testCompile (default-testCompile) @ my-project ---
[INFO] Changes detected - recompiling the module!
[INFO] Using Groovy-Eclipse compiler to compile both Java and Groovy files
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] my-project ......................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.358 s
[INFO] Finished at: 2015-04-16T10:05:13+02:00
[INFO] Final Memory: 71M/1234M
[INFO] ------------------------------------------------------------------------
---------------------------------------------------
... some irrelevant info ...
---------------------------------------------------
Exception in thread "main" java.lang.StackOverflowError
at org.codehaus.groovy.ast.ClassNode.isArray(ClassNode.java:1467)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:275)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:316)
at org.codehaus.groovy.ast.tools.GenericsUtils.correctToGenericsSpecRecurse(GenericsUtils.java:276)
... this continues on and on ...
当我在Idea中打开groovy文件时,我在编译期间遇到了同样的错误;但是,代码分析不会报告任何错误。
任何想法可能出错?
修改
我发现以下类文件(ArraysInListComparator.groovy
)会导致问题(请注意,使用List
或任何其他通用类并不重要)
class ArraysInListComparator<T> implements Comparator<List<T[]>> {
@Override
int compare(final List<T[]> o1, final List<T[]> o2) {
return 0
}
}
但是,如果通用数组直接在比较器中,它可以正常工作:
class ArraysComparator<T> implements Comparator<T[]> {
@Override
public int compare(T[] c1, T[] c2) {
return 0
}
}
当我将这些类重写为纯java类(.java文件)时,它们都被编译而没有任何错误。
答案 0 :(得分:0)
您显示的错误是旧版groovy版本的泛型处理中的错误。 correctToGenericsSpecRecurse不应该无休止地迭代。我不确定我是否已经看到ClassNode#isArray的错误作为入口点,但我很确定它本质上是我记得的错误。这意味着它不太可能是groovy-eclipse编译器中的错误。更新将有助于..或你做了什么,并在Java中拥有该文件。我无法回答的是为什么编译后会有编译。