スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

groovyコマンドの引数の順番で動きがおかしくなる

groovyではクラスをあらかじめ定義しておいてクラスパスが通っている場所に置いておくと、他のgroovyから利用できるようになります。

/Users/myself/clspath/Test.groovy

class Test {
def aaa() {
"bbb"
}
}

/Users/myself/App.groovy

import Test
println(new Test().aaa())


この時、カレントディレクトリを/Users/myselfの時に
groovy -cp .:/Users/myself/clspath App.groovy
で実行できます。

しかし、エンコーディングを指定した時に思わぬ落とし穴にはまりました。
本来なら以下のコマンドで実行できるはずです。
groovy --encoding UTF-8 -cp .:/Users/myself/clspath App.groovy

しかし
import Testの部分でTestが見つからないとエラーになってしまいます。
で、色々試してみた結果わかったのが、クラスパスを先にすることで避けられるということです。
以下でうまく動きます。
groovy -cp .:/Users/myself/clspath --encoding UTF-8 App.groovy

ちなみに、うまくいかなかった環境は
MacOSX10.6.4
Groovy Version: 1.7.4
JVM: 1.6.0_20
です。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。