2015-07-23 2 views
1

Я пытаюсь использовать Play 2.4 с MyBatis, но все равно сохраняю соединение HikariCP и новую инъекцию зависимости от Guice.Play не удается найти play.db.DBModule на пути к классам

При попытке просмотреть страницу, я получаю следующее сообщение об ошибке:

CreationException: Unable to create injector, see the following errors: 

1) No implementation for play.db.Database was bound. 

Однако оно должно быть ограниченным внутри play.db.DBModule, расположенный в play-jdbc_2.11-2.4.2.jar, верно?

Так что я добавил его силой в application.conf (который не должен быть необходимым, так как он уже в reference.conf кувшина, добавив

play.modules.enabled += "play.db.DBModule" 

Что делает ошибки хуже:

play.api.PlayException: Cannot load module[Module [play.db.DBModule] cannot be instantiated.] 
...snip... 
Caused by: java.lang.ClassNotFoundException: play.db.DBModule 
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~[na:1.8.0_20] 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_20] 
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_20] 
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~[na:1.8.0_20] 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_20] 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_20] 
at play.api.inject.Modules$$anonfun$locate$1.apply(Module.scala:105) ~[play_2.11-2.4.2.jar:2.4.2] 
... 36 common frames omitted 

Woot? ÒÒ Это ясно указывает, что вещь не находится на пути к классу (или не может быть найдена загрузчиком классов), правильно? Но это должно быть!

Когда я спрошу activator на номер show fullClasspath, он показывает мне, что включен Attributed(/Users/<me>/.ivy2/cache/com.typesafe.play/play-jdbc_2.11/jars/play-jdbc_2.11-2.4.2.jar). Может быть лгать. Но даже спрашивая lsof -p <PID>, мне сообщается, что процесс востребовал файл.

Это мой build.sbt, у кого есть идеи, что я могу сделать неправильно?

name := """MyBatisWithGuiceAndPlay""" 

version := "1.0-SNAPSHOT" 

lazy val root = (project in file(".")).enablePlugins(PlayJava) 

scalaVersion := "2.11.7" 

libraryDependencies ++= Seq(
    cache, 
    javaWs, 
    jdbc, 
    "com.google.guava" % "guava" % "18.0", 
    "org.mybatis" % "mybatis" % "3.3.0", 
    "org.mybatis" % "mybatis-guice" % "3.6", 
    "com.google.inject.extensions" % "guice-multibindings" % "4.0", 
    "org.freemarker" % "freemarker" % "2.3.23", 
    "org.webjars" % "yui-pure" % "0.5.0", 
    "org.webjars" % "jquery" % "2.1.4", 
    "org.webjars" % "select2" % "4.0.0-2", 
    "org.webjars" % "datatables" % "1.10.7", 
    "org.webjars" % "datatables-fixedheader" % "2.1.2-1" 
) 

ответ

2

Заменить jdbc с javaJdbc. build.sbt java-зависимостей имеют префикс java и следуют play.* название пакета конвенции. Зависимости Scala находятся в пакетах play.api.*.

+0

О, черт возьми, я знал об именах пакетов 'play. *' И 'play.api. *', Но я не знал, что у зависимостей есть префикс. \*румянец\* – tilois

Смежные вопросы