Tôi có một dự án đã hoàn thành trong khoảng một tháng mà tôi đã thực hiện bằng cách sử dụng Play 2.1.1, slick và MySQL. Bây giờ tôi cần phải chuyển nó sang MSSQL và tôi đang gặp một số vấn đề.Kết nối với MSSQL (jtds) với Play và Slick
Ứng dụng của tôi biên dịch tốt, và tìm thấy các trình điều khiển, nhưng bất cứ khi nào tôi cố gắng để tạo kết nối tôi nhận được một [RuntimeException: java.lang.ExceptionInInitializerError]
trên trang web, và một lỗi chi tiết hơn trong giao diện điều khiển của tôi là:
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]
Thú vị nhất điều mà tôi đã tìm thấy là dòng này mặc dù:
Caused by: play.api.Configuration$$anon$1: Configuration error[Slick error : Unknown jdbc driver found in application.conf: [net.sourceforge.jtds.jdbc.Driver]]
Nó tìm thấy trình điều khiển vì nếu tôi đặt sai tên, nó sẽ cho tôi lỗi; Tôi có trình điều khiển jtds trong thư mục lib
của mình.
tôi cũng kết nối với db khi khởi động
[info] play - database [default] connected at jdbc:jtds:sqlserver://ServerAddress/EGLC
Một số thông tin bổ sung:
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 Khi tôi làm mới một trang mặc dù tôi nhận được một ngoại lệ khác nhau với một bộ mới của lỗi mà thậm chí không đề cập đến jtds
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]
Cảm ơn ít nhất bây giờ tôi biết những gì đang xảy ra. Vấn đề duy nhất là phiên bản hiện tại của plugin có một cú pháp khác và tôi thực sự không muốn đi và thay đổi tất cả các mã cũ của tôi. Tôi đã thử bằng cách sử dụng trình điều khiển MS jdbc nhưng nó không tìm thấy nó khi tôi đặt nó trong lib. Bất kỳ ý tưởng tại sao nó có thể không tìm thấy người lái xe? – kingdamian42
Cú pháp khác nhau? Hãy để tôi đoán: bạn nhận được lỗi trình biên dịch ở đầu của phương pháp cơ sở dữ liệu của bạn, tại hoặc xung quanh 'ngầm ẩn phiên =>'? Chỉ cần định nghĩa kiểu của nó và phần còn lại có thể giữ nguyên: 'phiên ngầm định: Phiên =>'. Tuy nhiên, không biết về trình điều khiển của Microsoft. Có thể một người khác làm. – Carsten
Ah có lẽ là như vậy.Và vấn đề trình điều khiển máy chủ SQL là một thứ tự sai lầm nghiêm trọng của các gói. Tuy nhiên bây giờ nó nói rằng nó không thể kết nối với db bằng cách sử dụng 'db.default.url =" jdbc: microsoft: sqlserver: // ServerAddress/EGLC "' hoặc 'db.default.url =" jdbc: sqlserver: // ServerAddress/EGLC " Vì vậy, tôi không chắc chắn những gì đang xảy ra ... Cảm ơn bạn đã giúp đỡ, tôi chỉ có thể xác định loại và nâng cấp nếu/khi yêu cầu kéo được chấp nhận. – kingdamian42