我正在尝试构建DSL并使用全局AST变换来实现.该脚本正在使用groovyc进行编译,但是我希望能够让用户使用Grab / Grape来拉取JAR,并将其作为groovy脚本立即执行.
然后,我发现我无法正确执行,因为脚本中有一个解析错误,如果在@Grab调用后没有方法声明或import语句.
以下是一个例子:
@Grab(group='MysqL',module='mysql-connector-java',version='5.1.6') println "Hello World!"
它看起来应该有效,但它抱怨(这里是GroovyConsole Script的输出):
startup Failed: Script1.groovy: 4: unexpected token: println @ line 4,column 1. println "hello" ^ 1 error
尝试不同的东西使它工作,像一个import语句:
@Grab(group='MysqL',version='5.1.6') import groovy.lang.Object println "Hello World!"
或方法解密:
@Grab(group='MysqL',version='5.1.6') def hello() {} println "Hello World!"
这是解析器中的错误吗?
解决方法
抓斗只能作为
annotation to certain targets使用
@Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,ParaMETER,TYPE})
所以你需要注释这些东西之一(就像你看到的)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。