Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

Play/PrepareEclipse

Play/ScalaをEclipseで使う

以下はplay-1.2.3 + scala-0.9.1で確認。 eclipse用のscalaプラグインとしては2011/8/30時点の最新。

参考

eclipse用プラグイン

  • suppoer/eclipseフォルダにある.jarファイルをeclipseのdropinsフォルダに格納して、eclipseを再起動すると、

eclipseに「Play!」メニューが現れる。playclipseプラグインというらしい。

  • しかし、これは大したことはできない。入れなくてもよい。

eclipseプロジェクトにする

途中までは「Scala+IntelliJで使うための準備」と同じ。 elipse用にするには

 play eclipsify myApp

とする。これでeclipse用の.projectファイル等が生成される。 次に、eclipseの「File/Import/General/Existing Projects into Workspace」でワークスペースに入れる。

ビルドパス等の確認

プロジェクトのビルドパスを確認してみると、playのライブラリが指定されていることがわかる。

エラーの発生

Error in Scala compiler: typeConstructor inapplicable for <none>

http://d.hatena.ne.jp/k4200/20110807/1312737091によると、scala-compilerがライブラリパスに含まれていないせいだという。 しかし、ビルドパスを見てみるとちゃんと含まれている。 一度、プロジェクトメニューからcleanをしてみると、このエラーは解消する。

object Application is not a member of package views

app/(default package)/controllers.scalaというソースを見てみると

package controllers

import play._
import play.mvc._

object Application extends Controller {
    
    import views.Application._
    
    def index = {
        html.index("Your Scala application is ready!")
    }
    
}

Application及びhtmlが未定義になっているが、これらはplayが実行時にviewsディレクトリ以下のファイルから勝手に生成するものであるので、eclipse上では常にエラーの状態のままになる。 ただし、生成物はtmp/generated以下に格納されるので、一度でもplayを実行した後に、このディレクトリをライブラリとしてかソースとして取り込めば未定義は消える。具体的には以下のいずれか。

  • tmp/classesを「Add Class Folder」でライブラリに追加する。
  • tmp/generatedを「Add Folder」でソースに追加する。

再度、プロジェクトのcleanを行う。

Eclipse上での実行

eclipsifyを行ったことによって、自動的に実行用とテスト用のRun Configurationができているので、 これを選択して起動すればよい。上述した未定義エラーを解消しなくても実行できる。