我想在Groovyshell的帮助下运行一些动态脚本。但是,我不想在动态脚本中编写新的关键字。因此,我想到了添加带有Newify关键字的CompilerConfiguration。但是,事情没有按预期进行。
CompilerConfiguration configuration = new CompilerConfiguration()
configuration.addCompilationCustomizers(
new ASTTransformationCustomizer(
[pattern: "[A-Za-z0-9].*"],
Newify
))
GroovyShell shell = new GroovyShell(profile, configuration)
仍然出现错误
找不到匹配方法sample#BoundingRegion(int,int,int,int)
其中BoundingRegion是一个类
答案 0 :(得分:0)
也许您需要提供更多信息。这对我有用:
import org.codehaus.groovy.control.*
import org.codehaus.groovy.control.customizers.*
def script = '''
class Main {
static main(args) {
assert BigInteger.new(42).toString() == '42' // Ruby style
assert BigDecimal('3.14').toString() == '3.14' // Python style matching regex
}
}
'''
def configuration = new CompilerConfiguration()
configuration.addCompilationCustomizers(
new ASTTransformationCustomizer(
[pattern: "[A-Za-z0-9].*"],
Newify
))
new GroovyShell(configuration).evaluate(script)