2013-08-02 7 views
6

Play 2.1.1、slick、およびMySQLを使用して作成したプロジェクトは約1ヶ月間終了しました。今私はこれをMSSQLに移す必要があり、いくつかの問題があります。PlayとSlickでMSSQL(jtds)に接続

私のアプリケーションは罰金コンパイルし、ドライバを見つけたが、私は接続を試みるたび、私はサイト上[RuntimeException: java.lang.ExceptionInInitializerError]を取得し、私のコンソールでより詳細なエラーがある:

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.ExceptionInInitializerError]] 
    at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1] 
    at play.api.DefaultApplication.handleError(Application.scala:383) ~[play_2.10.jar:2.1.1] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:326) ~[play_2.10.jar:2.1.1] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:324) ~[play_2.10.jar:2.1.1] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1]java.lang.RuntimeException: java.lang.ExceptionInInitializerError 
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:222) ~[play_2.10.jar:2.1.1] 
    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.1] 
    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.1] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.1] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:108) ~[play_2.10.jar:2.1.1] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:106) ~[play_2.10.jar:2.1.1]Caused by: java.lang.ExceptionInInitializerError: null 
    at controllers.Application$$anonfun$addLicense$1.apply(Application.scala:18) ~[na:na] 
    at controllers.Application$$anonfun$addLicense$1.apply(Application.scala:17) ~[na:na] 
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:217) ~[play_2.10.jar:2.1.1] 
    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.1] 
    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.1] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.1] 
Caused by: play.api.Configuration$$anon$1: Configuration error[Slick error : Unknown jdbc driver found in application.conf: [net.sourceforge.jtds.jdbc.Driver]] 
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:80) ~[play_2.10.jar:2.1.1] 
    at play.api.Configuration.reportError(Configuration.scala:558) ~[play_2.10.jar:2.1.1] 
    at play.api.db.slick.Config$.driver(Config.scala:21) ~[play-slick_2.10-0.3.3.jar:0.3.3] 
    at play.api.db.slick.Config$.driver$lzycompute(Config.scala:7) ~[play-slick_2.10-0.3.3.jar:0.3.3] 
    at play.api.db.slick.Config$.driver(Config.scala:7) ~[play-slick_2.10-0.3.3.jar:0.3.3] 
    at models.License$.<init>(License.scala:38) ~[na:na] 

最も興味深いです私が見つけたものはしかし、この行です:私は間違った名前を入れた場合、それは私にエラーを与えるので

Caused by: play.api.Configuration$$anon$1: Configuration error[Slick error : Unknown jdbc driver found in application.conf: [net.sourceforge.jtds.jdbc.Driver]] 

それはドライバーを見つけたが、これはそうでない入力されたと。私はlibディレクトリにjtdsドライバを持っています。

私はまた、起動時にDBに接続しない

[info] play - database [default] connected at jdbc:jtds:sqlserver://ServerAddress/EGLC 

いくつかの追加情報:

application.conf

db.default.url="jdbc:jtds:sqlserver://ServerAddress/EGLC" 
db.default.driver=net.sourceforge.jtds.jdbc.Driver 
db.default.user="sa" 
db.default.password="pass" 
slick.default="models.*" 

Build.scala

val appDependencies = Seq(
// Add your project dependencies here, 
jdbc, 
"mysql" % "mysql-connector-java" % "5.1.25", 
"net.sourceforge.jtds" % "jtds" % "1.3.1", 
"com.typesafe.play" %% "play-slick" % "0.3.3" 
) 

EDIT私はページを更新すると、私も

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class models.Location$]] 
    at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.1] 
    at play.api.DefaultApplication.handleError(Application.scala:383) ~[play_2.10.jar:2.1.1] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:326) ~[play_2.10.jar:2.1.1] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$17$$anonfun$apply$24.apply(PlayDefaultUpstreamHandler.scala:324) ~[play_2.10.jar:2.1.1] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.1]java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class models.Location$ 
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:222) ~[play_2.10.jar:2.1.1] 
    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.1] 
    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.1] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.1] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:108) ~[play_2.10.jar:2.1.1] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:106) ~[play_2.10.jar:2.1.1] 
Caused by: java.lang.NoClassDefFoundError: Could not initialize class models.Location$ 
    at controllers.Application$$anonfun$locations$1$$anonfun$apply$12$$anonfun$apply$13.apply(Application.scala:47) ~[na:na] 
    at controllers.Application$$anonfun$locations$1$$anonfun$apply$12$$anonfun$apply$13.apply(Application.scala:46) ~[na:na] 
    at controllers.Secured$$anonfun$IsAuthenticated$3$$anonfun$apply$3.apply(Auth.scala:38) ~[na:na] 
    at controllers.Secured$$anonfun$IsAuthenticated$3$$anonfun$apply$3.apply(Auth.scala:38) ~[na:na] 
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:217) ~[play_2.10.jar:2.1.1] 
    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.1] 

答えて

5

play-slickはjTDS driverを知らない。一般supports SQL serverでスリックながら、遊ぶスリックmakes a connection from driver class name to Slick driver:あなたが見ることができるように

private def driverByName : String => Option[ExtendedDriver] = Map(
    "org.apache.derby.jdbc.EmbeddedDriver" -> DerbyDriver 
    ,"org.h2.Driver" -> H2Driver 
    ,"org.hsqldb.jdbcDriver" -> HsqldbDriver 
    ,"com.mysql.jdbc.Driver" -> MySQLDriver 
    ,"org.postgresql.Driver" -> PostgresDriver 
    ,"org.sqlite.JDBC" -> SQLiteDriver 
    ,"com.microsoft.sqlserver.jdbc.SQLServerDriver" -> SQLServerDriver 
).get(_) 

、MicrosoftのドライバがサポートされているのjTDSがない間。 MicrosoftのJDBCドライバを使用するか、play-slickを変更することができます。変更は簡単です。行を追加するだけです。

,"net.sourceforge.jtds.jdbc.Driver" -> SQLServerDriver 

これはうまくいくはずです。

私はプロジェクトのGitHubページでissue that you have raisedを見ました。私はpull request that should resolve this issueを送った。多分、それはplay-slickの次のバージョンに組み込まれるでしょう。

+0

少なくとも今、私は何が起こっているのか知っています。唯一の問題はプラグインの現在のバージョンが異なる構文をしていることです。私は古いコードをすべて変更して変更したくありません。私はMS jdbcドライバを使ってみましたが、libに入れてもそれを見つけられませんでした。なぜドライバが見つからないのか? – kingdamian42

+0

異なる構文ですか?私は推測してみましょう:データベースメソッドの始め、 '暗黙のセッション=>'のまわりでコンパイラエラーが発生しますか?その型を定義するだけで、残りは同じままです: '暗黙のセッション:セッション=>'。しかし、マイクロソフトのドライバについては知らない。多分誰かがそうします。 – Carsten

+0

ああそうだろう。SQL Serverのドライバの問題は、パッケージの誤った順序だった。しかし、今は 'db.default.url =" jdbc:microsoft:sqlserver:// ServerAddress/EGLC "またはdb.default.url =" jdbc:sqlserver:// ServerAddress/EGLC "を使用してdbに接続できないと言っています。 '何が起こっているのかわからない...助けてくれてありがとう、私はちょうどタイプを定義し、プル要求が受け入れられたときにアップグレードするかもしれない。 – kingdamian42

0

JTDSを言及していないエラーの新しいセットと異なる例外を取得しても、私はあなたのプロジェクトに依存関係としてJTDSドライバを追加する必要があります。

val appDependencies = Seq(
// Add your project dependencies here, 
jdbc, 
"com.typesafe.play" %% "play-slick" % "0.3.3", 
"net.sourceforge.jtds" % "jtds" % "1.3.0" 
) 
+0

libフォルダにjarファイルがあります。 – kingdamian42

関連する問題