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 で解決できる.
- File → Project Structure → Global Libraries で Maven から scala-compiler を検索して
org.scala-lang:scala-compiler:2.10.0
など適切なライブラリを追加する - Apply + OK して Project Structure を開き直して,Facets でさっきのエラーが出ていないことを確認する
- Compiler library に
<none>
の次に出てくるorg.scala-lang:scala-compiler:2.10.0
など追加したライブラリを設定して Apply + OK する
これで実行できるはず!
関連エントリー
ScalaのプロジェクトをGradleで管理しつつIntelliJで開発する(SBTなにそれ?) - _development,