2
我正在編寫一個java文件,在該文件中我使用GroovyClassLoader來解析給定的groovy文件以在其中找到類。爲此,我必須導入一些類(如org.junit.Test)並添加包並添加靜態導入。因爲我使用的是舊版本的Groovy 1.6,所以我無法使用編譯定製器,因爲這些類在這個版本中不可用。所以導入自定義類,我不得不通過擴展Groovy類加載器的類象下面這樣編寫定製的Groovy類加載器,關於通過自定義編譯過程在Groovy中添加導入包
...
public static class DefaultImportClassLoader extends GroovyClassLoader {
public DefaultImportClassLoader(ClassLoader cl){
super(cl);
}
public CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource codeSource) {
CompilationUnit cu = super.createCompilationUnit(config, codeSource);
cu.addPhaseOperation(new SourceUnitOperation() {
public void call(SourceUnit source) throws CompilationFailedException {
//source.getAST().addImport("Test",ClassHelper.make("org.junit.Test")); //working
source.getAST().addImportPackage("org.junit.");
}}, Phases.CONVERSION);
return cu;
}
}
這裏添加導入包不能正常工作。任何人會給出使用addImportPackage()的正確建議方式。
謝謝fonkap的回覆。 – Robo
我正在運行,如下所示,以瞭解某些常規文件中的類名。 – Robo
GroovyClassLoader classLoader = new GroovyScriptTestRun.DefaultImportClassLoader( GroovyScriptTestRun.class.getClassLoader()); scriptClass = classLoader.parseClass(filePath); System.out.println(「Script Class Name - >」+ scriptClass.getSimpleName()); – Robo