【问题标题】:Groovy script "unexpected token" with @ directive带有@指令的Groovy脚本“意外令牌”
【发布时间】:2020-03-09 04:22:04
【问题描述】:

这让我完全困惑。

规格:Linux Mint 18.3、Java 11、Groovy 2.5.9。

这些文件位于 NTFS 格式的分区上可能很有趣。

我用一个简单的@Grab 制作了一个简单的 Groovy 脚本文件:

package test;
@Grab(group='org.apache.commons', module='commons-lang3', version='3.7')
println "bye"

...失败:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/media/chris/W10 D drive/My Documents/software projects/EclipseWorkspace/GroovyExp2020-03-08/src/test/testscript.groovy: 5: unexpected token: println @ line 5, column 1.
   println "bye"
   ^

1 error

如果我注释掉 @Grab 行,它运行正常。

如果我这样编写脚本:

package test
def bosh = "jellow world"
bosh = "bash"
@Grab(group='org.apache.commons', module='commons-lang3', version='3.7')
bosh = "bish"

...在最后一行标记的投诉更改为“Groovy:当前范围已包含名称为 bosh 的变量”(!)。

如果我在 Grab 行的末尾加一个分号:

package test;
@Grab(group='org.apache.commons', module='commons-lang3', version='3.7');
println "bye"

...投诉变成“Unexpected token:;”

到目前为止,莫名其妙地莫名其妙。然而,更奇怪的是,我现有的一些脚本仍然可以正常工作:我可以像上面那样插入@Grab 行,而不会抱怨“意外令牌”。

这不是 Eclipse 生成的废话:我在 Linux CLI 上遇到了同样的问题。

【问题讨论】:

    标签: groovy compiler-errors


    【解决方案1】:

    您不能只在 groovy(或 Java)中的任何地方粘贴注释

    你需要注解一个类、方法或字段

    在您的示例中,您正在注释变量赋值(不起作用)和方法调用(也不起作用)

    将注解移到文件顶部,或类定义中

    【讨论】:

    • 谢谢!原来是一个“小学生错误”。但在我看来,必须创建一个虚假类才能引入通用依赖项,这似乎很奇怪。
    • 你不需要创建一个类。您可以注释 package 语句或 import 语句。对 println 的方法调用不可注释。
    猜你喜欢
    • 2015-05-03
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2017-07-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多