IntelliJ で "Compiler library: no scala-library*.jar found"

IntelliJ 12.1.6 + Scala + Gradle で構築した環境で Scala プログラムを実行できず,長いことはまってしまった.先輩に解決策を教えてもらったのでまとめておく.まだ試してないけど,Gradle を正式にサポートしてる IntelliJ 13 だともしかしたら問題なく環境構築できるのかもしれないけど,今回は IntelliJ 12 の前提で進める.

IntelliJ IDEA 13 is Released! Work Miracles in Java and Beyond | JetBrains IntelliJ IDEA Blog

事象整理

プロジェクトを作成して,Scala プログラムを実行すると ClassNotFoundException が出た.そもそもコンパイルができてなさそうな感じ.

Exception in thread "main" java.lang.ClassNotFoundException: xxx.yyy.xxx.HelloScala
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:171)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
Process finished with exit code 1

そこで File → Project Structure → Facets で Scala Facets を追加しようとしたら,ダイアログの下部に以下のようなエラーが表示されていた.

Compiler library: no scala-library*.jar found

Can JetGradle Be Used In IntelliJ 12 Alongside Gradle Generated Project Files That Have Scala Facets? - Stack Overflow

解決策

大きく 3Step で解決できる.

  1. File → Project Structure → Global Libraries で Maven から scala-compiler を検索して org.scala-lang:scala-compiler:2.10.0 など適切なライブラリを追加する
  2. Apply + OK して Project Structure を開き直して,Facets でさっきのエラーが出ていないことを確認する
  3. Compiler library に <none> の次に出てくる org.scala-lang:scala-compiler:2.10.0 など追加したライブラリを設定して Apply + OK する


これで実行できるはず!

関連エントリー

ScalaのプロジェクトをGradleで管理しつつIntelliJで開発する(SBTなにそれ?) - _development,