Play framework 2.5 でコントローラを作成すると『trait Singleton is abstract; cannot be instantiated』と表示される

こんにちはKUJIRAです。Play2.5を勉強してて、表題のエラーが出たのでメモ。

事象

以下のコードを実行すると『trait Singleton is abstract; cannot be instantiated』とエラーが出力されアプリケーションが動かない

問題のコード

出力されたエラーメッセージ

[info] Compiling 6 Scala sources and 1 Java source to /tmp/test_project/target/scala-2.11/classes...
[error] /tmp/test_project/app/controllers/Application.scala:6: trait Singleton is abstract; cannot be instantiated
[error] @Singleton
[error]  ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[info] Compiling 6 Scala sources and 1 Java source to /tmp/project/target/scala-2.11/classes...
[error] /tmp/project/app/controllers/Application.scala:6: trait Singleton is abstract; cannot be instantiated
[error] @Singleton
[error]  ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] application - 

! @735dd6521 - Internal server error, for (GET) [/index] ->
 
play.sbt.PlayExceptions$CompilationException: Compilation error[trait Singleton is abstract; cannot be instantiated]
        at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27)
        at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27)
        at scala.Option.map(Option.scala:145)
        at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:49)
        at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:44)
        at scala.Option.map(Option.scala:145)
        at play.sbt.run.PlayReload$.taskFailureHandler(PlayReload.scala:44)
        at play.sbt.run.PlayReload$.compileFailure(PlayReload.scala:40)
        at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17)
        at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17)

原因

@Singletonのimport宣言ができていないため問題が発生する。このアノテーションは『com.google.inject』ライブラリのものなのでそれをインポートしなければいけない

対処

対処は以下

解決。以上、KUJIRAでした。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください