時々、「全く同じgroovy scriptなのにあるマシンでだけ 起動に失敗する」ことがあります。 error messageはcaseによりますが、例えば直近では以下のようなものでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
要するに「guava-19.0.jarのdownloadに失敗した」と。 ~/.groovy/grapes/com.google.guava/guava/を見ると、 確かに他のlibrariesのようにjars directoryがありませんし、 当然jar fileもありません。 じゃぁっていうんで、自分でguava-19.0.jarを落としてきて、 jars/作ってその下に置いても、同じ結果です。 Groovyが悪いのかJavaが悪いのかGrapeが悪いのか設定が悪いのか versionが悪いのか、何なのか全然分かりません。 普通に動くマシンでのJava/Groovyとversionを合わせてもダメ、 Grapeする各libraryのversionを上げてもダメ、 Guava 19.0を明示的に@Grabに入れてもダメ、 Groovy - Grab - download failedを見て~/.groovy以下や~/.groovy/grapesを削除してもダメ、 と途方に暮れました。 いつもは面倒なので諦めて、 その動くマシンでやっていつのですけれども、 今回は粘って原因究明してみました。
結局、以下のどちらかの方法で立ち上がるようになりました。
~/.groovy/grapes/com.google.guava/guava/jarsではなく~/.groovy/grapes/com.google.guava/guava/bundlesにして、その下に落としてきたguava-19.0.jarを置く- 他の多くのlibrariesと同様に
~/.groovy/grapes/com.google.guava/guava/jarsに落としてきたguava-19.0.jarを置き、~/.groovy/grapes/com.google.guava/guava/ivy-19.0.xmlの<publications>下の<artifact name="guava" type="bundle" ext="jar" conf="master"/>のtypeattributeをbundleからjarにする
上手く行っていたマシンでは、 ~/.groovy/grapes/com.google.guava/guava/bundlesが出来ており、 その下にguava-19.0.jarもフツーにありました。 上手く行かないマシンではなぜbundlesが出来ないのか、は未だ不明ですが、 取り敢えず前に進める方法がわかったので記しています。
あぁ、あと、このようにGrapeに失敗すると、 ~/.groovy/grapes/以下にresolved-caller-all-caller-working73.propertiesとresolved-caller-all-caller-working73.xmlといったfilesが澱のように溜まっていくので、都度削除した方がいいです。