SORM:如何在 Scala 2.11.6 中使用 Sorm

Posted

技术标签:

【中文标题】SORM:如何在 Scala 2.11.6 中使用 Sorm【英文标题】:SORM: How can I use Sorm in Scala 2.11.6 【发布时间】:2015-08-03 11:55:44 【问题描述】:

如何在 Scala 2.11.6 中使用 Sorm, 在编译时出现以下错误

[error] Modules were resolved with conflicting cross-version suffixes in ...
[error] org.scala-lang.modules:scala-xml _2.11, _2.12.0-M1
[error] org.scala-lang.modules:scala-parser-combinators _2.11, _2.12.0-M1

在我的 build.sbt 中我正在使用...

name := "api-psi"

version := "1.0-SNAPSHOT"

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

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  "com.h2database" % "h2" % "1.4.177",
  "org.sorm-framework" % "sorm" % "0.3.18",
  "org.webjars" % "bootstrap" % "3.3.5",
  specs2 % Test
)

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

routesGenerator := InjectedRoutesGenerator

我正在尝试这个例子:https://www.youtube.com/watch?v=eNCerkVyQdcI,但他从来没有导入过 sorm...

各位,我设法解决了……

要解决不一致的问题,您应该清除 ivy 缓存:

 ~/.ivy2/cache

但是您还想修复 scala-compiler 使用的版本,并且希望它与您配置的 scalaVersion 匹配:

dependencyOverrides += "org.scala-lang" % "scala-compiler" % scalaVersion.value

现在在我的 SBT 上

name := """api-my-psi"""

version := "1.0-SNAPSHOT"

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

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  jdbc,
  cache,
  ws,
  specs2 % Test,
  "org.sorm-framework" % "sorm" % "0.3.18",
  "org.webjars" % "webjars-play_2.11" % "2.4.0-1",
  "org.webjars" % "bootstrap" % "3.3.5"
)

dependencyOverrides += "org.scala-lang" % "scala-compiler" % scalaVersion.value

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

routesGenerator := InjectedRoutesGenerator

【问题讨论】:

我编辑了我的答案,这应该可以解决问题 我有同样的问题,清理缓存不起作用。目前我正在使用临时解决方案,只需在我的 build.sbt 文件中添加“conflictWarning := ConflictWarning.disable”这一行。它有效。 您的解决方案有效! 有谁知道这个错误是否仍然存在或者是否已经修复? 【参考方案1】:

我认为问题出在线路

"org.scala-lang" % "scala-library" % "2.11.6"

删除它,因为 scala 版本应该像这样在你的 sbt 中:

name := "your name app" 

version := "your version"

scalaVersion := "2.11.6" 

libraryDependencies ++= Seq(
  "org.sorm-framework" % "sorm" % "0.3.18"
)

我用激活器创建了一个新的播放应用程序,因为它在播放框架中显示这是 build.sbt 添加 sorm: 的依赖项,还请删除 .ivy/cache 中的文件可能是某种在线离线依赖项,

我还认为问题出在 scala 2.11 特有的 webjars 依赖项上,我使用 java 8 进行了此编译,但这在这种情况下无关紧要,重要的是您的依赖项的 scala 版本试试这个:

  name := """Test***"""

version := "1.0-SNAPSHOT"

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

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  jdbc,
  cache,
  ws,
  specs2 % Test,
  "org.sorm-framework" % "sorm" % "0.3.18",
  "org.webjars" % "webjars-play_2.11" % "2.4.0-1",
  "org.webjars" % "bootstrap" % "3.3.5"
)

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

【讨论】:

是的 anquegi,我想构建一个游戏框架应用程序并想在里面使用 sorm-framework? 我用激活器创建了一个新的 scala 项目,并删除了 .ivy/cache 中的文件,但是......同样的错误 我设法解决了...要解决不一致的问题,您应该清除常春藤缓存:~/.ivy2/cache 但是您还想修复 scala-compiler 使用的版本,并且希望它匹配您配置的 scalaVersion:dependencyOverrides += "org.scala-lang" % "scala-compiler" % scalaVersion.value 非常感谢

以上是关于SORM:如何在 Scala 2.11.6 中使用 Sorm的主要内容,如果未能解决你的问题,请参考以下文章

如何为 scala 2.10.1 构建 sorm

启动使用 SORM 框架的 Scala 项目时出错

无法使用 sorm 访问字段

使用 SORM 持久化递归数据模型

如何将 SORM 框架与 Play 框架一起使用?

SORM 在小型数据库上的高查询响应时间