読者です 読者をやめる 読者になる 読者になる

IntelliJでScalaの設定がわからなくなったときの対応方法

IntelliJ scala play framework2

プロジェクトは忙しく、会社を設立するなど、休みもままならない状態が続いているのですが、今週末は休みをゲットしました。折角の休みなのでこのところご無沙汰している Play2+Scala をと思ったのですが、バージョンアップしてました。

とりあえずバージョンを最新にするためbrewでplayの最新版(2.1.3)を取得しIntelliJで開いて見てもビルドができない…。File -> Project Structure から参照しているScalaライブラリやプロジェクトの設定を見直してみてもうまくいきません。

もともと

[bash] Internal error (Plugin: org.intellij.scala): None.get [/bash]

というエラーが出ていて、どうもFSCの設定が正しくないらしいということまでは確認できました。早速FSCから通常のコンパイラに変更したのですが、次に表示されるエラーが

[bash] java.lang.NoClassDefFoundError: scala/tools/nsc/Main [/bash]

と変更されただけでした。

コンパイラ周りが正しく設定できていないらしいことは理解していたのですが、IntelliJ IDEA -> Preferences からコンパイラを設定することはできずどうしてもプロジェクトのライブラリまたはグローバルライブラリの設定のみとなってしまいます。

scalaはというと、brewでインストールしています。とりあえず何か情報がないかと思い brew info を実行してみると以下の通り出てきました。

[bash] $ brew info scala scala: stable 2.10.2, devel 4 http://www.scala-lang.org/ /usr/local/Cellar/scala/2.10.2 (97 files, 33M) * Built from source From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/scala.rb ==> Options --with-docs Also install library documentation ==> Caveats To use with IntelliJ, set the Scala home to: /usr/local/opt/scala/idea

Bash completion has been installed to: /usr/local/etc/bash_completion.d [/bash]

何ともまぁ賢いことで、ideaを使用している場合に設定するパスが表示されていました。このパスを設定しようと意気込んだわけですが、そもそもパスを設定する項目がIntelliJには見当たりません。

仕方がないので、Scalaの初期設定をどうしていたか思い返してみると、新規に作成するプロジェクトでScalaの設定を行ったような気がしたので、試しに新規にプロジェクトを作成してみたところ正解でした。

intellij_scala_init

この通り、Scalaコンパイラを指定する事が可能になります。ここに先ほどのbrewで確認したコンパイラのパスを入力すればOKです。

※ちなみに、画面の下の方にある Make Global Libraries はプロジェクト固有の設定ではなく次回以降新規に作成するプロジェクトで該当するライブラリを指定することができるようにするかを定義できるようです。ここにチェックをつけておくことで、新たに作成したプロジェクトでコンパイラを指定できました。

ここまで設定してから、FSCの設定で作成されたコンパイラを指定することで問題なく動作するようになりました。

うーん、とりあえずいろいろと問題に直面したときにノウハウをためていくしかないですね。