Groovy 意外标记:@ @ line

bek*_*kur 5 groovy

当我运行 groovy 时出现以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\Users\kbekur\MuleStudio\workspace\GroovyTest\src\com\test\SQLGroovy.groovy: 3: unexpected token: @ @ line 3, column 2.
    @Grab(group='org.hsqldb', module='hsqldb', version='2.3.2')
    ^

1 error
Run Code Online (Sandbox Code Playgroud)

我的代码是:

@Grapes([
     @GrabConfig(systemClassLoader = true)
     @Grab(group='org.hsqldb', module='hsqldb', version='2.3.2')
])
import groovy.sql.Sql
def db = [url:'jdbc:hsqldb:hsql://localhost/testdb', user:'sa', password:'', driver:'org.hsqldb.jdbc.JDBCDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
println 'Some GR8 projects:'
sql.eachRow('select * from Persons') { row ->
    println "${row.lastname.padRight(10)} ($row.personid)"
}
Run Code Online (Sandbox Code Playgroud)

经过分析,我发现

You can't annotate a statement. 
You should put the grab annotation on an import, for instance.
Run Code Online (Sandbox Code Playgroud)

我不清楚上述声明,我需要进行哪些更改来解决编译问题并加载 jars。

我引用的代码来自:jars、系统类加载器

tim*_*tes 5

您需要在列表中的两个项目之间使用逗号@Grapes,即:

@Grapes([
    @GrabConfig(systemClassLoader = true),
    @Grab(group='org.hsqldb', module='hsqldb', version='2.3.2')
])
Run Code Online (Sandbox Code Playgroud)

您还可以删除该@Grapes部分,仅给出:

@GrabConfig(systemClassLoader = true)
@Grab(group='org.hsqldb', module='hsqldb', version='2.3.2')
Run Code Online (Sandbox Code Playgroud)

(这里不需要逗号,因为它们不再在列表中)