2013-06-13 4 views
12

これは動作しません:Groovy:この "Hello World"プログラムで何が問題になっていますか?

$ 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 

しかし、bashのことができるようにするために見えても... ...

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

を最後のダブルとシングル引用符作品の間にスペースを入れてまた

を、を括弧で囲む:次のように正しく末尾"'ペア(すなわち、任意の介在スペースなし)を処理引数が正常に動作します:

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

を今、私は非常に最初のケースが動作しない理由を知っていただきたいと思います。

私が使用している:

  • bashのを、バージョン "4.2.45(1)-release(x86_64版-pc-linux-gnuのよう)"
  • グルーヴィー、バージョン2.1.3
+2

これは_bash_問題ではなく、面倒な問題です。 (_zsh_、_csh_、_dash_はすべて保存動作を示します) – DaoWen

+0

奇妙なことです。 0xFFFFは[Unicodeで定義されたコードポイントでもない](http://www.fileformat.info/info/unicode/char/ffff/index.htm)です。 –

+0

@RayToal - '0xFFFF'は-1、またはEOF(ファイルの終わり)です。 – DaoWen

答えて

-2

これはOSXで正常に動作します。私はこのエラーが不適切な終了と関係していると思います。 Linux上で、次の実行:

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

私はバージョン2.1.3とJava 6で実行例外を参照してください。BDKosherは、すでに述べたように

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! 
3

の作品これはApache Commons CLIのバグです。 Groovyは1.3にアップデートしようとしていますが、CLIの人々はそのバージョンで時間を奪い、互換性がありません。

上記のコメントに書いたように、0xFFFFはantlrによってファイルの終わりを示すために使用されていますが、有効なユニコード文字である必要はありません。文言はこれによって批判されましたが、言葉遣いは私たちからではなく、パーサージェネレータからのものです。

関連する問題