簡體   English   中英

Groovy:這個“Hello World”計划出了什么問題?

[英]Groovy: What's wrong with this “Hello World” program?

這不起作用:

$ 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

正如BDKosher已經說過的,這是來自Apache Commons CLI的錯誤。 Groovy希望更新到1.3,但是CLI人員會花時間使用該版本並且它包含不兼容性。

正如我在上面的注釋中寫的那樣,antlr使用0xFFFF來顯示文件的結尾,它不必是一個有效的unicode字符。 由於這一點,措辭受到批評,但措辭來自解析器生成器antlr,而不是來自我們。

我看到運行版本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!

這在OSX上運行良好。 我認為這個錯誤與不正確的終止有關。 以下在linux上運行:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM