Groovy:这个" Hello World"程序?

时间:2013-06-13 03:06:19

标签: groovy

这不起作用:

$ groovy -e 'println "Hello, world!"'
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_from_command_line: 1: unexpected char: 0xFFFF @ line 1, column 23.
   println "Hello, world!
                         ^

1 error

但是,在最后的双引号和单引号之间加一个空格......

$ # groovy -e 'println "Hello, world!"'
$   groovy -e 'println "Hello, world!" '
Hello, world!

...即使bash似乎能够正确处理尾随"'对(即没有任何中间空间),如下所示:

$ echo '"Hello, world!"'
"Hello, world!"

此外,括号化println参数也可以正常工作:

$ groovy -e 'println ("Hello, world!")'
Hello, world!

现在,我想知道为什么第一种情况不起作用。

我正在使用:

  • bash,版本“4.2.45(1)-release(x86_64-pc-linux-gnu)”
  • groovy,版本2.1.3

3 个答案:

答案 0 :(得分:4)

正如BDKosher所说,这是来自Apache Commons CLI的错误。 Groovy想要更新到1.3,但是CLI人员花时间使用该版本并且它包含不兼容性。

正如我在上面的注释中写的那样,antlr使用0xFFFF来显示文件的结尾,它不一定是有效的unicode字符。由于这一点,措辞受到批评,但措辞来自解析器生成器antlr,而不是来自我们。

答案 1 :(得分:0)

我看到运行版本2.1.3和Java 6的异常:

    C:\Users\mwest>groovy -e 'println "Hello, world!"'
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_from_command_line: 1: expecting ''', found '<EOF>' @ line 1, column 9.
   'println

好奇地扭转引号

C:\Users\mwest>groovy -e "println 'Hello, world!'"
Hello, world!

答案 2 :(得分:-2)

这在OSX上运行良好。我认为这个错误与不正确的终止有关。以下在linux上运行:

groovy -e 'println "Hello, world!";'