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

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

【Play Framework】 「console」でメソッドを実行できなくなった

Play Framework Scala

スポンサードリンク

以前の記事で、こんな便利な技を手に入れた。

aipacommander.hatenablog.jp



時はたって、また同じことを実行しようとした。

scala> models.Login.sha512("01")
java.lang.NoClassDefFoundError: Could not initialize class models.Login
  ... 43 elided


おろ?


調べてみました。



どうやらinitしないといけないらしい


というわけで、stackoverflowさんたちにお世話になってきました。

# これと
scala> import play.core.StaticApplication
import play.core.StaticApplication

# 次にこれを実行する
scala> new StaticApplication(new java.io.File("."))
[info] play - datasource [jdbc:mysql://localhost/project] bound to JNDI as DefaultDS
[info] play - database [default] connected at jdbc:mysql://localhost/project
play.api.Configuration$$anon$1: Configuration error[Cannot register class [models.Login] in Ebean server]
  at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
  at play.api.Configuration.reportError(Configuration.scala:743)
  at play.Configuration.reportError(Configuration.java:310)
  at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:81)
  at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
  at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
  at scala.collection.immutable.List.foreach(List.scala:381)
  at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
  at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
  at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
  at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
  at play.api.Play$.start(Play.scala:90)
  at play.core.StaticApplication.<init>(ApplicationProvider.scala:55)
  ... 43 elided
Caused by: java.lang.NoClassDefFoundError: Could not initialize class models.Login
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:274)
  at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:79)
  ... 52 more

こうやるとできるらしい。。。。。お?


またエラーだ。なんでだろ?

「clean」したらいいと天からお告げが


どこからか、「clean するのじゃ」という声が聞こえてきました。(本当は探しに探した結果です)


一旦consoleから脱出して実行する。

[project] clean

[project] console
[info] Updating {file:/Users/project/}root...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 18 Scala sources and 17 Java sources to /Users/project/target/scala-2.11/classes...
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import play.core.StaticApplication
import play.core.StaticApplication

# おっ、できたっぽい
scala> new StaticApplication(new java.io.File("."))
[info] play - datasource [jdbc:mysql://localhost/project] bound to JNDI as DefaultDS
[info] play - database [default] connected at jdbc:mysql://localhost/project
[info] play - Application started (Prod)
res0: play.core.StaticApplication = play.core.StaticApplication@2a16e88f


できたんじゃね?

scala> models.Login.sha512("password")
res1: String = b109f3bbbc244eb824ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5ffab0cacbc86


できました。よかった。。。