这不起作用:
$ 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!
现在,我想知道为什么第一种情况不起作用。
我正在使用:
答案 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!";'