Groovy 2.1.3 + IBM J9 JDK 1.7.0 でコマンドラインからGroovyが呼び出せない

ま、ここに書いてある事象と同じではありますが・・・・。

http://groovy.329449.n5.nabble.com/Startup-problems-possible-to-specify-javahome-through-command-line-td5716159.html

IBM J9 JDK 1.7.0をインストールして、JAVA_HOMEに設定している環境で、コマンドラインからgroovyを呼ぶとエラーになり、groovy.batからならいけるという謎の事象。
これ、Windows7環境だけじゃなくて、Windows Server 2008 R2環境でも同じですね。

C:\Users\Administrator>set JAVA_HOME=IBM JDKのインストールパス

C:\Users\Administrator>groovy.bat -v
Groovy Version: 2.1.3 JVM: 1.7.0 Vendor: IBM Corporation OS: Windows Server 2008 R2

C:\Users\Administrator>groovy -version
error: could not find client or server jvm under IBM JDKのインストールパス
please check that it is a valid jdk / jre containing the desired type of jvm

まあ、果たしてIBM J9 JDKとGroovyを合わせて使う人がどれだけいるかどうか疑問ではありますが・・・。
細かいところはさておき、Oracle JDKでは持っていないメインフレーム向けの文字コードIBM J9 JDKでは持っていたりするんですよね。
メインフレームDB2JDBC接続するときのNEC機種依存文字の文字化け防止にも必須っぽい。


2013/9/17追記

とまあ、上記の感じでbat経由で起動すればいいやとか思ってたら、頂いたコメントで疑問氷解。

nobusuenobusue 2013/09/16 09:51
http://d.hatena.ne.jp/orangeclover/20130914/1379115966 でもコメントいただいていますが、Windowsインストーラー版で導入したgroovy.exeにはJREのパスがハードコードされていて、かつOracleJDKしか対応していないというのが原因です。
groovy.batはgroovy.exeを経由せずに直接Groovyのブートストラップクラスを実行するので、このような現象は起きないです。
ですので対策としては、「Windowsインストーラー版を使わずにzipを直接展開する(こちらにはgroovy.exeが入っていません)」もしくは「goovy.batを明示的に指定する」ということになります。

なんでこうなるのかよくわからん・・・と思ってたらまさかのハードコーディングなのですね。
そういやWindows2008R2でJAVA_HOMEなしでインストーラ動かすと似たような事象が起きてたのでそれも似たような感じかもしれません。