这个故事非常简短,首先是Lucene课程中的一些摘录:
分析仪:
public abstract class Analyzer implements Closeable {
(...)
public static class TokenStreamComponents { ... }
(...)
}
AnalyzerWrapper:
public abstract class AnalyzerWrapper extends Analyzer {
(...)
@Override
protected final TokenStreamComponents createComponents(String fieldName, Reader aReader) {
return wrapComponents(fieldName, getWrappedAnalyzer(fieldName).createComponents(fieldName, aReader));
}
(...)
}
现在在Grails应用程序中我定义了自己的类MyAnalyzer.groovy
class MyAnalyzer extends AnalyzerWrapper {
private final PerFieldAnalyzerWrapper perFieldAnalyzerWrapper
public MyAnalyzer() { ... }
@Override
protected Analyzer getWrappedAnalyzer(String fieldName) {
perFieldAnalyzerWrapper.getWrappedAnalyzer(fieldName)
}
@Override
protected TokenStreamComponents wrapComponents(String fieldName, TokenStreamComponents tokenStreamComponents) {
perFieldAnalyzerWrapper.wrapComponents(fieldName, tokenStreamComponents)
}
}
当我尝试运行/编译应用程序时,我得到:
[groovyc] Compiling 2 source files to E:\somewhere\...\target\classes
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] E:\somewhere\...\MyAnalyzer.groovy: 31: unable to resolve class TokenStreamComponents
[groovyc] @ line 31, column 5.
[groovyc] @Override
[groovyc] ^
[groovyc]
[groovyc] 1 error
但是,如果我在TokenStreamComponents
中重写方法的定义中同时更改Analyzer.TokenStreamComponents
到MyAnalyzer
的出现次数,则该类编译正常。
有没有人知道这种行为背后是否存在某些逻辑上的原因,例如顺便说一下Groovy或Grails的行为,还是我在这里错过了一些东西?
答案 0 :(得分:2)
只需添加行导入分析器。*;到您的程序的导入部分。 !如果它解决了,请告诉我。!