Home — Playframework
最近触りだしたplayです。
google guava
そしてこのgoogle製javaライブラリである、guavaを組み込もうとしたところ、少しはまりました。
guavaですが、今までapacheのcommons-lang、io、collections.等を使っていましたが それを更に便利に今風にしたもので、おすすめなのです。
dependenciesにguavaを追加する
まず、$PROJECT_HOME/project/Build.scala を開きます。
val appDependencies = Seq( の部分を以下のように修正します。
val appDependencies = Seq( // Add your project dependencies here, "mysql" % "mysql-connector-java" % "5.1.20" ,"com.google.guava" % "guava" % "13.0" )
play compileする
$ play [info] Loading project definition from /Applications/eclipse/workspace/treefigure-front/project [info] Set current project to treefigure-front (in build file:/Applications/eclipse/workspace/treefigure-front/) _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.0.2, http://www.playframework.org > Type "help play" or "license" for more information. > Type "exit" or use Ctrl+D to leave this console. [treefigure-front] $ compile [info] Updating {file:/Applications/eclipse/workspace/treefigure-front/}treefigure-front... [info] Done updating. [success] Total time: 3 s, completed 2012/08/26 19:13:41
うまくいきました。
play startする
[treefigure-front] $ start (Starting server. Type Ctrl+D to exit logs, the server will remain in background) Play server process ID is 591 [info] play - database [default] connected at jdbc:mysql://localhost/treefigure?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull Oops, cannot start the server. java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.maximumSize(I)Lcom/google/common/cache/CacheBuilder; at org.reflections.adapters.JavassistAdapter.(JavassistAdapter.java:28) at org.reflections.util.ConfigurationBuilder.(ConfigurationBuilder.java:41) at play.api.Application.getTypesAnnotatedWith(Application.scala:263) at play.Application.getTypesAnnotatedWith(Application.java:102) at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:61) at play.api.Play$$anonfun$start$1.apply(Play.scala:60) at play.api.Play$$anonfun$start$1.apply(Play.scala:60) at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) at scala.collection.immutable.List.foreach(List.scala:45) at play.api.Play$.start(Play.scala:60) at play.core.StaticApplication.(ApplicationProvider.scala:51) at play.core.server.NettyServer$.createServer(NettyServer.scala:132) at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:153) at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:152) at scala.Option.map(Option.scala:133) at play.core.server.NettyServer$.main(NettyServer.scala:152) at play.core.server.NettyServer.main(NettyServer.scala)
NoSuchMethodErrorとな。。まじか。依存性を解決してくれたんじゃないのか。。。
原因を探ります。
at org.reflections.adapters.JavassistAdapter.(JavassistAdapter.java:28)
むむむ。これかな。ggr。
org.reflections
あった!これか。
dependenciesにreflectionsを追加する
val appDependencies = Seq( // Add your project dependencies here, "mysql" % "mysql-connector-java" % "5.1.20" ,"com.google.guava" % "guava" % "13.0" ,"org.reflections" % "reflections" % "0.9.8" )
追加しました。これいけるかな。
play compileする
[treefigure-front] $ compile [info] Updating {file:/Applications/eclipse/workspace/treefigure-front/}treefigure-front... [info] Done updating. [success] Total time: 3 s, completed 2012/08/26 19:57:16
よし。
play startする
[treefigure-front] $ start (Starting server. Type Ctrl+D to exit logs, the server will remain in background)
キター!
それにしてもこの現象、ggrと結構前のバージョンから起きてるみたいですね。
解決してよグーグル先生。。