現象
大人の事情で、Scala 2.9.2でjarファイルを作る必要があったのですが、すんなりとできなかったのでメモ。
(ちなみに2015/11/14現状の安定板はScala 2.11.7)
まず、IntelliJ IDEAを使ってプロジェクトを新規作成し、クラスを適当に定義。
そのあと、IntelliJ IDEAのsbt consoleからcompile
してみたところ、以下のエラーが出てコンパイルできない。。目的のjarも作れない。。
[error] error while loading AnnotatedElement, class file 'C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.5\jre\jre\lib\rt.jar(java/lang/reflect/AnnotatedElement.class)' is broken
環境
- IntelliJ IDEA: 14.1.5
- sbt: 0.13.8
- Scala: 2.9.2
- Java: 1.7.0u80
- OS: windows 10
対策
その1:IntelliJ IDEAのsbtを使わない
sbtの公式(http://www.scala-sbt.org)からsbtをダウンロードしてパスを通してコマンドプロンプトを立ち上げてプロジェクトに移動して、sbt compile
。
普段Java8を使っている人は、Java7用のJAVA_HOMEに変更しておくことをお忘れなく。
その2:sbt consoleを使わない
IntelliJ IDEAのSBT Task
としてTasksにcompile
を登録してRun
。
その3:番外編
大人の事情がなければScalaのバージョンを上げればいいよ。
その他
- 単にどこかの設定が不足しているだけかもしれないけど、上の組み合わせだとデフォルトの状態で失敗します。
- External Librariesにはjdkのライブラリがちゃんと読み込まれています。
- Scala 2.10以降なら問題ないです。
- sbtのバージョンを下げても改善しません。
- Java6でも改善しません。
- IntelliJ IDEA 15だとなぜだかset consoleがインストールされなくてそもそも上の問題が発生しません。
- Scalaのメジャーバージョンは2桁目。なので、2桁目が違っていたら互換性はないものと考える。
- Scala 2.9.2を使うときのJavaのバージョンは7か6か。8はダメ。
- IntelliJ IDEAのsbtと公式のsbtは違うようです。