从播放框架 2.0.8 迁移到 2.1.0 错误:缓存播放已存在

Posted

技术标签:

【中文标题】从播放框架 2.0.8 迁移到 2.1.0 错误:缓存播放已存在【英文标题】:migration from play framework 2.0.8 to 2.1.0 ERROR: cache play already exists 【发布时间】:2015-02-03 12:02:37 【问题描述】:

我已经从 play framework 2.0.8 迁移到 2.1.0,一切看起来都很完美,但我收到以下错误:

play.api.UnexpectedException: 意外异常[ObjectExistsException: 缓存播放已经存在] 在 play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:142) ~[play_2.10.jar:2.1.0] 在 play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:106) ~[play_2.10.jar:2.1.0] 在 scala.Option.map(Option.scala:145) ~[scala-library.jar:na] 在 play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:106) ~[play_2.10.jar:2.1.0] 在 play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:104) ~[play_2.10.jar:2.1.0] 在 scala.util.Either$RightProjection.flatMap(Either.scala:523) [scala-library.jar:na] 引起:net.sf.ehcache.ObjectExistsException:缓存播放已经存在 在 net.sf.ehcache.CacheManager.addCache(CacheManager.java:1163) ~[ehcache-core.jar:na] 在 play.api.cache.EhCachePlugin.x$1$lzycompute(Cache.scala:122) ~[play_2.10.jar:2.1.0] 在 play.api.cache.EhCachePlugin.x$1(Cache.scala:120) ~[play_2.10.jar:2.1.0] 在 play.api.cache.EhCachePlugin.cache$lzycompute(Cache.scala:120) ~[play_2.10.jar:2.1.0] 在 play.api.cache.EhCachePlugin.cache(Cache.scala:120) ~[play_2.10.jar:2.1.0] 在 play.api.cache.EhCachePlugin.onStart(Cache.scala:138) ~[play_2.10.jar:2.1.0]

这个问题有什么解决办法吗?

谢谢!

已编辑 这是我的 build.scala

import sbt._
import Keys._
import play.Project._
import com.github.play2war.plugin._

object ApplicationBuild extends Build 

val appName         = "Lndlabproject"
val appVersion      = "1.0-SNAPSHOT"

val appDependencies = Seq(
  javaCore, javaJdbc, javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.18",
  "org.hibernate" % "hibernate-entitymanager" % "4.1.3.Final",
  "org.apache.httpcomponents" % "httpclient"  % "4.0.3",
  "japid42" % "japid42_2.9.1" % "0.5.3",
  "org.apache.poi" % "poi" % "3.8",
  "org.apache.poi" % "poi-ooxml" % "3.9",
  "com.feth" %% "play-easymail" % "0.1-SNAPSHOT",
  "org.apache.directory.studio" % "org.apache.commons.io" % "2.4",
  "org.apache.ant" % "ant-jsch" % "1.7.1",
  "play" % "spring_2.9.1" % "2.0" exclude("play","play_2.9.1")
)

 val main = play.Project(appName, appVersion, appDependencies).settings(

    Play2WarPlugin.play2WarSettings: _*)
    .settings(Play2WarKeys.servletVersion := "2.5")
    .settings(

  // Add your own project settings here      
  ebeanEnabled := false, 
  resolvers += Resolver.url("My GitHub Play Repository",   url("http://branaway.github.com/releases/"))(Resolver.ivyStylePatterns),

  resolvers += Resolver.url("play-easymail (release)", url("http://joscha.github.com/play-easymail/repo/releases/"))   (    Resolver.ivyStylePatterns),
  resolvers += Resolver.url("play-easymail (snapshot)", url("http://joscha.github.com/play-easymail/repo/snapshots/"))(Resolver.ivyStylePatterns)
)

 

编辑

这里是播放依赖命令的结果

+--------------------------------------------- -------------------------------------------+------------------ ----------------------------------------------+--- -------------------------------------------------+ | net.sf.ehcache:ehcache-core:2.6.0 |播放:播放_2.10:2.1.0 |作为 ehcache-core.jar | | |播放:播放_2.9.1:2.0.4 | | +-------------------------------------------------- ----------------------------------------+---------- --------------------------------------------+------ ----------------------------------------------+

如何排除呢?

【问题讨论】:

你可以在我的问题中看到 Build.scala,是的 100 次。 【参考方案1】:

日志说你有 2 个缓存插件

通过play dependencies检查重复依赖

通过做排除重复的依赖

("play" % "play_2.10" % "2.1.1") .exclude("oauth.signpost", "signpost-core")

build.scala 中(派生自).exclude(重复依赖项之一)。

【讨论】:

通过 (dependency).exclude("play","*") 排除 build.scala 中的依赖项 你能写出正确的语法吗?那真的很有帮助。谢谢。 @AbdulAleemAkhund 首先通过我的答案中描述的方法找到重复的依赖项,然后在 build.scala 中执行 ("play" % "play_2.10" % "2.1.1") .exclude("oauth.signpost", "signpost-core") (derived from).exclude(one of the duplicate dependency) 我用过 ("play" % "play_2.9.1" % "2.0.4") .exclude("", "") 并且它已经解决了所有依赖,但我又遇到了同样的错误。如何解决这个问题。?有什么想法吗? 在排除中,您必须放置重复的依赖项,这就是为什么我告诉您通过play dependency 找到重复的依赖项然后通过(derived from).exclude(one of the duplicate dependency) 排除它。顺便说一句,您如何从某个 IDE 运行项目还是直接从终端?

以上是关于从播放框架 2.0.8 迁移到 2.1.0 错误:缓存播放已存在的主要内容,如果未能解决你的问题,请参考以下文章

升级到 2.4 时播放框架表单类型不匹配

如果 URL 在播放框架中无效,则重定向到错误页面。 1.25?

实体框架迁移错误 - 序列不包含任何元素

迁移到 Swift 3 时可以使用旧框架吗?

Flask框架从入门到精通之模型迁移操作(十六)

将 Web 应用程序从 2.0 迁移到 3.5 框架的最快和最佳方法?