0

アプリケーションで play フレームワークをバージョン 2.1 に更新しましたが、それ以上動作しません。

以下は単純なコントローラーです。

package controllers

import play.api._
import play.api.mvc._
import models.Country
import ru.circumflex.orm._

object Application extends Controller {

  def index = Action {

      val co = Country AS "co"
      val q = SELECT (co.*) FROM (co)

      val countries: Seq[Country] = q.list()

      Ok(views.html.index(countries))
  }

}

そして、ここに国のモデルがあります:

package models

import ru.circumflex.orm.{TextField, Table, Record}
import java.util.regex.Pattern

class Country extends Record[String, Country] {
  def PRIMARY_KEY = code
  def relation = Country

  def this(code: String, name: String) = {
    this()
    this.code := code
    this.name := name
  }

  val code: TextField[Country] = "code".VARCHAR(2).NOT_NULL
  val name = "name".TEXT.NOT_NULL

  def cities = inverseMany(City.country)

  override def toString = name.getOrElse("unknow")
}

object Country extends Country with Table[String, Country] {
  val codeKey = UNIQUE(code)
  val codeChk = CONSTRAINT("code_chk").CHECK("code IN ('ch', 'us', 'uk', 'fr', 'es', 'it', 'pt', 'by')")
  val idx = "country_code_idx".INDEX("LOWER(code)").USING("btree").UNIQUE

  validation.notNull(_.code)
            .notEmpty(_.code)
            .pattern(_.code, Pattern.compile("(?i:[a-z]{2})"))
}

ページを開くと、次のエラーが表示されます。

[error] application -                                                                            

! @6d9l5j0i0 - Internal server error, for (GET) [/] ->                                           

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.ExceptionInInitial
izerError]]                                                                                      
        at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]  
        at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]  
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$24.apply(
PlayDefaultUpstreamHandler.scala:314) [play_2.10.jar:2.1.0]                                      
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$24.apply(
PlayDefaultUpstreamHandler.scala:312) [play_2.10.jar:2.1.0]                                      
        at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play
_2.10.jar:2.1.0]                                                                                 
        at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play
_2.10.jar:2.1.0]                                                                                 
java.lang.RuntimeException: java.lang.ExceptionInInitializerError                                
        at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:222) ~[play_2.10.jar:2.1.0]     
        at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$
6.apply(Action.scala:109) ~[play_2.10.jar:2.1.0]                                                 
        at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$
6.apply(Action.scala:109) ~[play_2.10.jar:2.1.0]                                                 
        at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.0]   
        at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.sc
ala:108) ~[play_2.10.jar:2.1.0]                                                                  
        at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.sc
ala:106) ~[play_2.10.jar:2.1.0]                                                                  
Caused by: java.lang.ExceptionInInitializerError: null                                           
        at controllers.Application$$anonfun$index$1.apply(Application.scala:18) ~[na:na]         
        at controllers.Application$$anonfun$index$1.apply(Application.scala:11) ~[na:na]         
        at play.api.mvc.ActionBuilder$$anonfun$apply$11.apply(Action.scala:254) ~[play_2.10.jar:2
.1.0]                                                                                            
        at play.api.mvc.ActionBuilder$$anonfun$apply$11.apply(Action.scala:254) ~[play_2.10.jar:2
.1.0]                                                                                            
        at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:217) ~[play_2.10.jar:2.1.0]     
        at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$
6.apply(Action.scala:109) ~[play_2.10.jar:2.1.0]                                                 
Caused by: java.lang.ClassNotFoundException: models.Country                                      
        at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0_09]                          
        at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.7.0_09]                          
        at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_09]             
        at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.7.0_09]                      
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_09]                        
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_09]                        

誰でもこの問題を解決するのを手伝ってもらえますか?

4

2 に答える 2

0

これらの情報を使用して修正しました:リファレンス

まず、Github からサーカムフレックスの最後のバージョンを取得します。

git clone git://github.com/inca/circumflex.git

提案に従って、ファイル orm/src/main/scala/relation.scala の行を変更します

55行目:

val _recordClass: Class[R] = Class.forName(

val _recordClass: Class[R] = this.getClass().getClassLoader().loadClass(

これで、Play 2.1 アプリでコンパイル、インストール、使用できるようになりました。

cd circumflex
mvn clean install

必要なモジュールが 1 つだけの場合:

cd circumflex
mvn clean install -pl <circumflex-orm> -am

ファイルを編集してproject/Build.scala、依存関係とローカル担当者を追加します

  val appDependencies = Seq(    
   "pro.savant.circumflex" % "circumflex-orm" % "3.1-SNAPSHOT"
  )

  val main = play.Project(appName, appVersion, appDependencies).settings(defaultScalaSettings:_*).settings(
    resolvers += "Local Maven Repository" at "file:"+Path.userHome.absolutePath+"/.m2/repository"
  )
于 2013-05-23T00:19:01.783 に答える
0

Circumflex 2.x は scala 2.10 (play 2.1 に必要) に対してビルドされていないようです。

サーカムフレックス 3.0 は 2.10 でビルドされていますが、現在はスナップショットのみです。ここでスナップショットを取得できます。

https://oss.sonatype.org/content/repositories/snapshots/

パッケージ名が ru.circumflex から pro.savant.circumflex に変更されたためインポートステートメントのリファクタリングが必要になる場合があることに注意してください。

于 2013-03-18T02:31:25.120 に答える