(説明省略)の部分はぐぐってください。
MSYS + mintty をインストール(説明省略)。
groovy の bin にパスが通っていること。
$ groovy -v Groovy Version: 1.8.6 JVM: 1.6.0_31 Vendor: Sun Microsystems Inc. OS: Windows 7
以下、c:/__test で作業する。
$ cd /c/__test
次の内容の Foo.groovy を書く。エンコーディングは UTF-8。
println "あいうえお"
mintty で実行するとエンコーディングでこける。
$ groovy Foo.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: C:\__test\Foo.groovy: 2: expecting anything but ''\n''; got it anyway @ line 2, column 18. println "縺ゅ>縺?∴縺? ^ 1 error
オプションでエンコーディングを指定してあげると良いらしい。
$ groovy -c UTF-8 Foo.groovy あいうえお
さすがに毎回これをやるのはだるいのでエイリアスを設定する。
$HOME/.profile に以下を追加。
$HOME/.profile がない場合は自分でファイルを作る。
alias groovy='groovy -c UTF-8'
mintty を一旦終了して起動し直す。
このとき、mintty のコマンドライン引数を次のようにする(説明省略)。
C:\MinGW\msys\1.0\bin\mintty.exe /bin/bash --login -i
~/.profile が読み込まれてエイリアスが効いていることを確認。
$ alias alias groovy='groovy -c UTF-8'
実行してみる。
$ groovy Foo.groovy あいうえお
コンパイルしてクラスファイルを作ってみる。
$ groovyc Foo.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Foo.groovy: 2: expecting anything but ''\n''; got it anyway @ line 2, column 18. println "縺ゅ>縺?∴縺? ^ 1 error
ここでもエンコーディングでこける。これもオプションで。
$ groovyc --encoding UTF-8 Foo.groovy #=> Foo.class ができる
java で実行してみる。
$ java Foo bash: java: command not found
パスが通ってなかった。 $HOME/.profile に以下を追加。
export PATH=$PATH:/c/pleiades/java/6/bin
mintty を再起動して
$ java Foo java.lang.NoClassDefFoundError: groovy/lang/Script at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Caused by: java.lang.ClassNotFoundException: groovy.lang.Script at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 12 more Could not find the main class: Foo. Program will exit. Exception in thread "main"
これは
groovy-*/embeddable/groovy-all-*.jar
をクラスパスに追加すれば良いらしい。
$ java -cp /c/groovy-1.8.6/embeddable/groovy-all-1.8.6.jar Foo java.lang.NoClassDefFoundError: Foo Caused by: java.lang.ClassNotFoundException: Foo at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: Foo. Program will exit. Exception in thread "main"
カレントディレクトリがクラスパスに入っていなかった。
$ java -cp .:/c/groovy/1.8.6/embeddable/groovy-all-1.8.6.jar Foo あいうえお
できた。