未知类型:运行groovy脚本时的方法_DEF
以下groovy脚本未编译未知类型:运行groovy脚本时的方法_DEF,groovy,Groovy,以下groovy脚本未编译 import java.util.concurrent.Callable println "b"; Callable<String> callable = new Callable<String>() { String call() { println("C"); return null; } }; import java.util.concur
import java.util.concurrent.Callable
println "b";
Callable<String> callable = new Callable<String>()
{
String call() {
println("C");
return null;
}
};
import java.util.concurrent.Callable
println“b”;
Callable Callable=new Callable()
{
字符串调用(){
println(“C”);
返回null;
}
};
这就是错误:
org.codehaus.groovy.control.multipleCompationerErrorSexception:
启动失败:C:\tmp\a.groovy:6:
未知类型:第6行的方法_DEF
专栏:9。文件:C:\tmp\a.groovy@
第6行,c列9。
字符串调用(){
^
1错误
原因是什么以及如何解决?请尝试按以下方式重新格式化:
import java.util.concurrent.Callable
println "b";
Callable<String> callable = new Callable<String>() \
{
String call() {
println("C");
return null;
}
};
import java.util.concurrent.Callable
println“b”;
Callable Callable=new Callable()\
{
字符串调用(){
println(“C”);
返回null;
}
};
因为分号是可选的,所以groovy对换行符很敏感,偶尔会以意外的方式解析语句是一个完整的语句。Java足够聪明,可以看到它是一个匿名的内部类,因为该语句没有在行的末尾终止,但第一行是语法正确的groovy并停止解析
解决方案是用反斜杠转义换行,迫使groovy继续解析语句。或者,您可以将大括号放在行的末尾(即)。谢谢!我有点怀疑“分号在groovy中是可选的”,现在我明白了,我不相信这个是对的。不,没有必要不相信它…你只是碰巧遇到了极少数会破坏它的案例之一。我必须更新我的Groovy版本才能工作(我不知道我当时使用的是1.1版)。谢谢。