5

最后,我有以下设置

C:>在哪里播放 C:\apps\play-2.2.0\play C:\apps\play-2.2.0\play.bat

C:>哪里斯卡拉 C:\apps\scala\bin\scala C:\apps\scala\bin\scala.bat


Scala -version > Scala 代码运行器版本 2.10.2 -- 版权所有 2002-2013,LAMP/EPFL

播放 - 版本 >

使用 Scala 2.10.2(运行 Java 1.7.0_21)构建的 play 2.2.0,http: //www.playframework.com

这不是一个游戏应用程序!

用于play new在当前目录中创建新的 Play 应用程序,或转到现有应用程序并使用play.

您还可以在http://www.playframework.com浏览完整的文档。


当我在播放提示符下运行 > 重新加载、更新时,出现以下错误

[error] Modules were resolved with conflicting cross-version suffixes in     {file:/C:/<filepat>}<appname>:
[error]    org.scala-stm:scala-stm _2.10, _2.10.0
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) Conflicting cross-version suffixes in: org.scala-stm:scala-stm
[error] Total time: 7 s, completed Oct 18, 2013 1:33:41 PM
[modelingApp] $

在 Build.scala 中添加以下内容后

"dependencyGroupId"         %% "dependencyArtifactId" % "dependencyVersion"    exclude("org.scala-stm", "scala-stm_2.10.0")

得到以下错误

[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) sbt.ResolveException: unresolved dependency:       dependencyGroupId#dependencyArtifactId_2.10;dependencyVersion: not found
[error] Total time: 8 s, completed Oct 18, 2013 1:22:18 PM
[modelingApp] $
4

4 回答 4

3

这是 Play 上的一个已知问题:

冲突的跨版本后缀:org.scala-stm:scala-stm

也许您使用的 play slick 还没有为 Play 2.2 做好准备。

尝试

"com.typesafe.play" %% "play-slick" % "0.5.0.2-SNAPSHOT"

或者,如果它是另一个依赖于 Play 2.1.x 的库,请尝试

//replace the name and versions with that of your library
//since Scala 2.10.0 do not put the minor version into the artifact name:
//scala-stm_2.10 instead of scala-stm_2.10.0
"the lib vendor" %% "name" % "version" exclude("org.scala-stm", "scala-stm_2.10.0")
于 2013-10-19T07:04:07.790 回答
3

问题是在 sbt 中检测 scala 版本不匹配的唯一方法是通过这个工件扩展“_”。

这个特殊问题是 Play 所依赖的 scala-stm 版本声明它与 scala 2.10.0 兼容,而您的构建表示它可以从 2.10.x 系列中获取任何内容。sbt 发出警告说这些是不同的。

在实践中,scala-stm 工件实际上可以安全使用,它只是在发布时配置错误(我相信当时的文档错误)。所以在这种情况下,忽略错误是安全的。但是,一般来说,应该认真对待这个错误。在工件上声明的不同 Scala 二进制版本号很可能会导致潜入您的代码的 RUNTIME 错误(而不是编译时间)。

您可以使用该conflictWarning键来控制如何记录此消息。我相信如果你想完全忽略警告(不推荐,因为大多数应该是合法的问题),那么你可以使用这个设置:

conflictWarning := ConflictWarning.disable

另外,我相信这是这个问题的重复:冲突的跨版本后缀:com.twitter:util-core

于 2013-10-23T13:54:07.413 回答
1

这取决于您的 scala 版本,例如我使用:

"com.typesafe.akka" % "akka-remote_2.11" % "2.3.6"

对于 scala 2.11.1。您可以从此链接找到合适的版本。

于 2014-09-30T12:12:20.873 回答
1

从 Play 2.1.* 升级到 Play 2.2.* 时,我遇到了同样的错误。该项目包括secureSocial,它也需要更新到Play 2.2。

"securesocial" %% "securesocial" % "2.1.0"

"ws.securesocial" %% "securesocial" % "2.1.3"

请参阅安全社交安装文档

于 2014-05-23T17:54:24.957 回答