Scala2.10でハマった忘備録
はじめに
Scala2.10が出たので、と何も考えずに使ったらズボズボ嵌ったのでメモ代わりに。ただこの不都合は、時間が経てば解消される可能性が高いものもあるので、鵜呑みにしないで参考程度に。
補足(2013/03/01)
気付いたらscala-ioのバージョンが0.4.2に上がって、以下の問題は無くなっていた。あとSlickが使えるのもあって、普通に仕事で使っている。
binary version
詳しくはここ
http://d.hatena.ne.jp/tototoshi/20121122/1353516773
簡単に説明すると、現状のScalaは、コンパイラのメジャーバージョンが変わるとバイナリが非互換になるので、ライブラリの後ろにVersion番号が付いてる。scala-io-core_2.9.2とかね。
で、今までは2.9.2とか、マイナーバージョンまで付いてたけど、2.10から一律で2.10で呼び出すように変更になった。
2.10.xなら一律2.10で呼び出せて、ライブラリ作者も利用者も便利だね!はいいんだけど、かなり非互換な変更なので色々不都合が出てる。
特に重要なのはsbt。この記法に対応したのはsbt0.12.0から。という訳で2.10を使いたければsbtのアプデ必須。
β版使ってた人やlibrary作者の場合は、もう少し色々手間掛かるみたいなので、上のリンク読むと良いと思う。
scala-io
※なんか実体はレポジトリ間で同じバージョンなのに中身が違うとかいう話もあってカオスなので、留意しておいた方がいいと思う。以下はMaven Centralの話です
scala-ioはリッチなファイルI/O周りの処理を行うことができるScalaのライブラリ。
結論から言うと、2.10版のscala-ioには、依存する筈のライブラリが実は存在していない、というしょうもない(?)バグがある。
ただレポジトリによっては、同じバージョンでもこのバグが修正されているものもあるらしい?少なくともMaven Centralはアウト。
で、アウトな場合はexcludeすれば解決する。というか依存とか言いながら無くても動くじゃねーか…。
"com.github.scala-incubator.io" %% "scala-io-core" % "0.4.1" exclude("javax.transaction", "jta"), "com.github.scala-incubator.io" %% "scala-io-file" % "0.4.1" exclude("javax.transaction", "jta")
結論
なんかバタバタしてるし、仕事で2.10使うのはちょっと待っといた方がいいかなぁなんて。WindowsのSP1のごとく、2.10.1が出てからが本番かな?w