sbt 0.13.14-RC1からJava9に(無理やり?)対応したらしいので、いくつか試しているので、現状の知見を簡単にメモ
- https://github.com/sbt/sbt/pull/2951
- https://groups.google.com/d/topic/sbt-dev/iu6qT12R6q0/discussion
scalaz
- scala-jsがそのままだと問題あったがそれ以外は特に問題なし
- scala-jsの問題とは「Scala 2.10かつJava 9の環境でscala.util.Properties.isJavaAtLeast呼び出すと例外 => それのせいでparallel collectionが動かない => scala-jsがデフォルトではparallel collection使う、という挙動」
- parallel optimizerをdisableにすれば動く
- https://github.com/scalaz/scalaz/commit/f430a1ced184462
- https://github.com/sbt/sbt/pull/295
argonaut
- scalazと同様、scala-jsの件以外は特になし
- https://github.com/argonaut-io/argonaut/commit/43746b23327d0968968830a837962fc1009257d1
scalikejdbc
- java.time.DateTime.nowが、Java9からnano秒も返すように変更された???
- https://github.com/scalikejdbc/scalikejdbc/issues/647
- mockitoは最新にしないと動かない
squeryl
- cglibという、実行時にバイトコード生成する系のライブラリ?がうまく動かなかったが、最新にあげたら動いた
- https://github.com/squeryl/squeryl/pull/229
- https://github.com/cglib/cglib/commit/d6fe1d8c73508ef30883eb1f9ae965d15953e7d0
- ついでにリリースしておいた
ScalaPB
- https://github.com/scalapb/ScalaPB
- javax.annotation.Generatedが参照できなくてテストが動かない(たしか、ScalaPB自体ではなくprotobufのjavaが付与するやつ)
- project Jigsawでなにか変わったせい?(まだScala側が対応できてないっぽい https://github.com/scala/scala-dev/issues/139
- javaxなどの "java.base" module以外にあるclassは、基本的に参照でなさそうなので、Scala本体の修正待ちか?
unfiltered
- nettyを最新にしないと動かない https://github.com/netty/netty/pull/6356
- かつ、ScalaPBと同じく、javaxパッケージのものを参照してるのでダメっぽい?(javax.activation.MimeTypeなど)
- https://github.com/unfiltered/unfiltered/blob/de0e391b7e5aefdeadb0bb3b18e2e9eed1b30c48/util/src/main/scala/mime.scala#L23
scalaprops
- https://github.com/scalaprops/scalaprops
- scalazと同様、scala-jsの件以外は問題なし
msgpack4z-core
- https://github.com/msgpack4z/msgpack4z-core
- scala-jsの件以外問題なさそう
msgpack-java
- Scalaプロジェクトではないがビルドにsbt使っているし、テストコードがScalaなので
- ByteBufferにメソッド増えた影響で、overloadが曖昧って怒られる https://github.com/msgpack/msgpack-java/pull/415
- sbt-jcheckstyleというpluginがisJavaAtLeast呼び出してるので動かない https://github.com/xerial/sbt-jcheckstyle/issues/3
gitbucket
- sun.misc.BASE64Decoder参照しててコンパイルエラー https://github.com/gitbucket/gitbucket/issues/1490
- 普通にjava.util.Base64使えばいいのに、何故これ使っていたのか?
- mockito最新にする必要ある
typelevel/cats
- scala-js以外問題なさそう
scalatra
- mockito上げないとテストが動かない
scalaj-http
- リフレクション部分が動かない
- https://github.com/scalaj/scalaj-http/issues/127
json4s
- そもそもコンパイルが通らない???
- https://travis-ci.org/xuwei-k/json4s/jobs/210930616
Scala 2.12.2 待ち?Scalaコンパイラ内部のasmが5.2にならないとダメっぽい- https://github.com/scala/scala-asm/commit/ccbe1cad9c27303043f43bce16dda948e3285fff
- https://github.com/scala/scala/commit/8136057e7c4a403433fd4c66b32de7df972029fe
- 追記: scalacの最適化オプション使うとダメなようだった。最適化オプション消したらビルドできた https://github.com/json4s/json4s/commit/658505f63e https://github.com/json4s/json4s/commit/7edcd28479c74
scala-csv
- https://github.com/tototoshi/scala-csv/pull/100
- Java9 で Seq("-target", "8") を指定するとダメだった?(よくわかってない)