日々常々

ふつうのプログラマがあたりまえにしたいこと。

JDK8EAでGrabが使えないぽ

わざわざEAなんて入れる人はハマらないんだろうけども……(´・ω・`)


JDK8 Early Access Releasesさんを入れてる端末で。

% java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b91)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b33, mixed mode)

@Grab を使おうとするとコケる。

% groovy hoge.groovy
Caught: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: No suitable ClassLoader found for grab
	at hoge.<clinit>(hoge.groovy)

JDK7にしたらいけた。

% export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home
% groovy hoge.groovy
hoge

他は意外と普通に動いてたからJDK8になってたの気付かなかった……

Groovyをbrewからgvmに乗り換えるメモ

brewいいんですが、なんかgvmが流行なので乗り換えるです。

gvm?

「the Groovy enVironment Manager」らしいです。とりあえず rvm っぽいものです。rvm もそんなに理解してないんですが。

gvmのインストール

書いてる通りやります。

$ curl -s get.gvmtool.net | bash

JAVA_HOME 設定してないって怒られた(´・ω・`)
ぶっちゃけ未だに MacJAVA_HOME とかよくわかってないです。勢い余って JDK8 の方で突っ込みかけた*1けど、そんなので詰まっても困るのでフツーにてきとーに設定して、もっかいコマンド実行。

なんか派手だ。

brewのを外す

こんななってます。私は Groovy2.1 を気軽に触りたいのですが、brew で update してもまだな感じ。

$ brew info groovy
groovy: stable 2.0.5
http://groovy.codehaus.org/
/usr/local/Cellar/groovy/1.8.6 (39 files, 17M)
/usr/local/Cellar/groovy/2.0.1 (59 files, 25M)
/usr/local/Cellar/groovy/2.0.4 (58 files, 25M)
/usr/local/Cellar/groovy/2.0.5 (58 files, 25M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/groovy.rb
==> Caveats
You should set the environment variable GROOVY_HOME to
  /usr/local/Cellar/groovy/2.0.5/libexec
$ groovy -version
Groovy Version: 2.0.5 JVM: 1.7.0_11 Vendor: Oracle Corporation OS: Mac OS X

何も考えず unlink しとく。

$ brew unlink groovy
Unlinking /usr/local/Cellar/groovy/2.0.5... 8 links removed
$ groovy -version
-bash: /usr/local/bin/groovy: No such file or directory

やたーはずれたー。

gvmでインストール

とりあえずインストール……の前にバージョン指定出来るっぽいけど、どんなのあるのか確認しとく。たぶんlistで出るんだろう(説明読まない人

$ gvm list groovy

============================================================
Available Groovy Versions
============================================================
     2.1.0
     2.0.6
     2.0.5
     2.0.4
(中略)
     1.5.3
     1.5.2
     1.5.1
     1.5.0

============================================================
+ - local version
* - installed
> - currently in use
============================================================

お、おう……。*2


見るだけ見て、結局は指定もせず、だーん。

$ gvm install groovy

Downloading: groovy 2.1.0

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27.0M  100 27.0M    0     0   477k      0  0:00:57  0:00:57 --:--:--  562k

Installing: groovy 2.1.0
Done installing!

Do you want groovy 2.1.0 to be set as default? (Y/n): y

Setting groovy 2.1.0 as default.

できた。と思ってバージョン確認。

$ groovy -version
-bash: /usr/local/bin/groovy: No such file or directory

(´・ω・`)?


新しいターミナル立ち上げたらいけた。

$ groovy -version
Groovy Version: 2.1.0 JVM: 1.7.0_11 Vendor: Oracle Corporation OS: Mac OS X

たぶん gvm インストールした時に勝手に .bashrc に追記された gvm-init.sh がなんかしてるんだろう*3


groovyconsoleも立ち上がったし、とりあえずこれでいいや。gradleとかはまだだけど、多分同じだろう。brewのゴミ?しらんがな……。*4


さて、使い方はまた今度そのうち読もう。

brewのお片づけ

cleanupしたら古いのだけ消える。*5

$ brew cleanup groovy
Removing: /usr/local/Cellar/groovy/1.8.6...
Removing: /usr/local/Cellar/groovy/2.0.1...
Removing: /usr/local/Cellar/groovy/2.0.4…

ここで info したら groovy2.0.5が残ってる。これは uninstall で消える。

$ brew uninstall groovy
Uninstalling /usr/local/Cellar/groovy/2.0.5...

だからといっていきなり単純に uninstall を叩いても最新しか消えない。こういうのは force つければOK。

$ brew uninstall --force groovy

まとめ

だらだら書いたけど、やることは単純です。

  1. gvm をインストールする
    • JAVA_HOMEを設定しなきゃ怒られる
    • インストール後はターミナル再起動する
    • (どっちもgvmがメッセージ出してくれるけど)
  2. brew で入れたのを消す
    • `brew rm --force groovy` とかでよさげ
  3. gvm でインストールする
    • `gvm install groovy` (バージョン指定しない場合)

*1:勢いとか関係無い

*2:1画面に収まらない分がずらーっと出た

*3:.bashrc 読み直したら行けたし。

*4:たぶん brew cleanup groovy でいいんだけど、放っておいても実害ないしなー。

*5:unlinkしてたら全部消えると思ってた

合同勉強会in大都会岡山 -2012 Winter-でG*紹介してきた

2012/12/15に 合同勉強会in大都会岡山 -2012 Winter- - PARTAKE にて hoge駆動 で参加してきました。

そもそもhoge駆動ってなんよ?

しらん。

hoge駆動って岡山県近辺のIT勉強会コミュニティなの?

しらんって。

内容

Groovyを聞いたことある程度な人は多いんだけど、使ったことがあるって人はなかなかいない。実際コード書くってなると謎のハードルがあるんだろうか?まぁいいや。それでも Gradle ならそんなの気にせず使えるよ。
IDE使わずJava書いてる人なんていないだろうから、IDEがGroovy使えるようにしなきゃいけないけど、そもそもデフォルトでGroovy使えないIDEってEclipseくらいなもんだから、Eclipseをやめるかプラグイン入れて Spock 使おう。そうすればイケてるパラメタライズドテスト書けるよ。
何もかもすんなり行く、全く問題無いとは言いませんが、それでもそれだけの価値はあるんではないかと。この二つはとりわけ、Javaプロダクトを作りつつGroovyを勉強する動機になるだけのパワーがあると思ってます。

おまけ(なんかこわい)