2016-06-16 9 views
0

Я использую фреймворк Play 2.5.3 и по какой-то причине Ebean, кажется, терпит неудачу, создавая эволюции для моего локальная (в памяти) база данных. Вот полная трассировка стека.Play 2.5.3/Ebean: NoSuchMethodError: com.avaje.ebean.config.ServerConfig.getConstraintNaming()

[info] play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: com.avaje.ebean.config.ServerConfig.getConstraintNaming()Lcom/avaje/ebean/config/DbConstraintNaming;] 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:174) 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:126) 
[info] at scala.Option.map(Option.scala:146) 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:126) 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:124) 
[info] at scala.util.Success.flatMap(Try.scala:231) 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:124) 
[info] at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:116) 
[info] at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) 
[info] at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) 
[info] Caused by: java.lang.NoSuchMethodError: com.avaje.ebean.config.ServerConfig.getConstraintNaming()Lcom/avaje/ebean/config/DbConstraintNaming; 
[info] at com.avaje.ebean.dbmigration.model.CurrentModel.<init>(CurrentModel.java:37) 
[info] at play.db.ebean.EbeanDynamicEvolutions.generateEvolutionScript(EbeanDynamicEvolutions.java:91) 
[info] at play.db.ebean.EbeanDynamicEvolutions.lambda$create$4(EbeanDynamicEvolutions.java:59) 
[info] at play.db.ebean.EbeanDynamicEvolutions$$Lambda$33/1642038057.accept(Unknown Source) 
[info] at java.util.HashMap.forEach(HashMap.java:1280) 
[info] at play.db.ebean.EbeanDynamicEvolutions.create(EbeanDynamicEvolutions.java:58) 
[info] at play.api.db.evolutions.ApplicationEvolutions.start(ApplicationEvolutions.scala:40) 
[info] at play.api.db.evolutions.ApplicationEvolutions.<init>(ApplicationEvolutions.scala:150) 
[info] at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:53) 
[info] at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:53) 

В результате этого исключения я получил рядом с информацией.

В моем файле "application.conf",

ebean.default = ["models.*"] 

    db { 
     # You can declare as many datasources as you want. 
     # By convention, the default datasource is named `default` 

     # https://www.playframework.com/documentation/latest/Developing-with-the-H2-Database 
     default.driver = org.h2.Driver 
     default.url = "jdbc:h2:mem:play" 
     default.username = sa 
     default.password = "" 

     # You can turn on SQL logging for any datasource 
     # https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements 
     #default.logSql=true 
    } 

, который, кажется, что все еще использует. Мой ebean.properties файл, который я думал, что может быть проблема, просто содержит

ebean.namingconvention=com.avaje.ebean.config.MatchingNamingConvention 

Мой файл build.sbt выглядит следующим образом:

name := """Project-CS2340""" 

version := "1.0-SNAPSHOT" 

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

resolvers ++= Seq(
    "webjars" at "http://webjars.github.com/m2" 
) 

scalaVersion := "2.11.7" 

libraryDependencies ++= Seq(
    javaJdbc, 
    cache, 
    javaWs, 
    "org.webjars"    %% "webjars-play"  % "2.3.0", 
    "org.webjars"    % "bootstrap"   % "3.0.0" exclude("org.webjars", "jquery"), 
    "org.webjars"    % "jquery"    % "1.8.3", 
    "org.avaje.ebeanorm" % "avaje-ebeanorm" % "4.6.2" 
) 

playEbeanDebugLevel := 4 

fork in run := true 

Ранее сегодня приложение работало без ошибок, и Полагаю, что я что-то изменил и забыл об этом, сделав перерыв. Не знаю, честно.

ответ

0

Заменить библиотеку зависимость ebean в файле build.sbt

"org.avaje.ebeanorm" % "avaje-ebeanorm" % "4.6.2" 

следующим

"org.avaje" % "ebean" % "2.7.3" 

ИМЕЕТ УДАЧУ

+0

Эй, к сожалению, это не сработало. Я изменил эту строку и добавил новый .jar, который был загружен в папку lib моего проекта. Есть другие идеи? Спасибо за начальную помощь! –

+0

Я еще немного испортил свои зависимости и заставил его работать. Кажется, что была некоторая проблема с наличием нескольких версий ebean в качестве зависимости. Избавьтесь от всех, кроме ebean-2.7.3 и avaje-ebeanorm-6.18.1, и внесение вышеуказанных изменений в файл build.sbt устранили проблему. –