0

我是 groovy 的新手,这是我的第一个 groovy 代码。

我在 IntelliJ 中编写了一个小型 groovy 应用程序,并且在 IDE 中一切正常。然后我想在shell中测试代码。这是我的启动脚本:

#!/bin/sh
#--------------+
# START SCRIPT |
#--------------+
#
CLASSPATH=$(JARS=("lib"/*.jar); IFS=:; echo "${JARS[*]}")
CLASSPATH=.:$CLASSPATH

/Users/myUsername/Documents/dev/groovy-2.1.3/bin/groovy -cp $CLASSPATH com/bla/Frequency.groovy

我遇到了一些我无法弄清楚的错误。这是其中的两个:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, com/bla/Frequency.groovy: 219: The name log doesn't refer to a declared variable or class. The static scope requires that you declare variables before using them. If the variable should have been a class check the spelling.
@ line 219, column 9.
       log.info "Application is completed!"

我实际上用@Slf4j 注释注释了我的类:

@Slf4j
class Frequency {
  public static void main(String[] args) {
    // do some things

    log.info "Application is completed!"
  }
}

另一个问题是多重分配。这是我的示例代码:

def (elementId, elementValue) = equalsPattern.split(element)

这是我得到的错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, /Users/myUsername/Documents/dev/workspace/bla/trunk/src/main/groovy/com/bla/Frequency.groovy: 163: unexpected token: def @ line 163, column 13.
           def (elementId, elementValue) = equalsPattern.split(element)
4

2 回答 2

1

我无法使用您发布的代码重现该错误。这对我有用:

@Grab(group='org.slf4j', module='slf4j-simple', version='1.7.5')

@groovy.util.logging.Slf4j
class Frequency {
    public static void main(String[] args) {
        // do some things

        log.info "Application is completed!"
    }
}

关于第二个问题:当您收到错误消息“ unexpected token: def”时,表示解析器无法理解错误上方的代码。您发布的行是正确的。

于 2013-06-06T14:44:10.897 回答
0

我和我的朋友解决了这个问题。我们在运行脚本时将所有 groovy jar 添加到类路径中,并且神秘问题消失了。如果您能告诉我为什么这可以解决问题,我将不胜感激。

#!/bin/sh
#--------------+
# START SCRIPT |
#--------------+
#
GROOVY_HOME=/Users/yusufsoysal/Documents/dev/groovy-2.1.3

CLASSPATH=$(JARS=($GROOVY_HOME/lib/*.jar); IFS=:; echo "${JARS[*]}")
CLASSPATH=$CLASSPATH:$(JARS=("lib"/*.jar); IFS=:; echo "${JARS[*]}")
CLASSPATH=.:$CLASSPATH

$GROOVY_HOME/bin/groovy -cp $CLASSPATH com/bla/Frequency.groovy
于 2013-06-07T10:53:57.500 回答