我是Scala,SBT和Play的新手,所以请将此视为NooB questtion。我正在为竞赛构建一个示例Play应用程序,并以reactive-stocks应用程序作为模板开始。为了自然地扩展其功能,我需要添加安全性,JDBC连接等。
这是模板中提供的原始build.sbt文件 -
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
ws, // Play's web services module
"com.typesafe.akka" %% "akka-actor" % "2.3.4",
"com.typesafe.akka" %% "akka-slf4j" % "2.3.4",
"org.webjars" % "bootstrap" % "2.3.1",
"org.webjars" % "flot" % "0.8.0",
"com.typesafe.akka" %% "akka-testkit" % "2.3.4" % "test"
)
在此我将“com.typesafe.play”%“anorm_2.11”%“2.4.0-M1”添加到slf4j依赖项之后的列表中,并且应用程序能够编译并运行。
现在,如果我添加任何“com.typesafe.play”%“filters-helpers_2.11”%“2.4.0-M1”或“com.typesafe.play”%“play-jdbc_2.11”%“ 2.4.0-M1" , 播放应用程序无法在Activator web ui中编译,消息为“(echo:run)java.lang.ClassNotFoundException:play.core.server.NettyServer”。
我正在使用JDK 8.失败的配置是
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
ws, // Play's web services module
"com.typesafe.akka" %% "akka-actor" % "2.3.4",
"com.typesafe.akka" %% "akka-slf4j" % "2.3.4",
"org.webjars" % "bootstrap" % "2.3.1",
"org.webjars" % "flot" % "0.8.0",
"com.typesafe.akka" %% "akka-testkit" % "2.3.4" % "test",
"com.typesafe.play" % "anorm_2.11" % "2.4.0-M1",
"com.typesafe.play" % "filters-helpers_2.11" % "2.4.0-M1",
"com.typesafe.play" % "play-jdbc_2.11" % "2.4.0-M1"
)
带有日志
Reapplying settings...
Set current project to reactive-stocks (in build file:/D:/Miura/reactive-stocks/)
Reapplying settings...
Set current project to reactive-stocks (in build file:/D:/Miura/reactive-stocks/)
Reapplying settings...
Set current project to reactive-stocks (in build file:/D:/Miura/reactive-stocks/)
Reapplying settings...
Set current project to reactive-stocks (in build file:/D:/Miura/reactive-stocks/)
Running task... Cancel: sbt.TaskCancellationStrategy$Null$@571cf19b, check cycles: false
play.core.server.NettyServer
(echo:run) java.lang.ClassNotFoundException: play.core.server.NettyServer
Run complete.
答案 0 :(得分:2)
正如Google group所述,问题在于混合了Play库版本。股票模板适用于Play 2.3.3,但我试图添加的库是2.4。
build.sbt中的此配置有效
libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
答案 1 :(得分:0)
我也有这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: play/core/server/NettyServer
Caused by: java.lang.ClassNotFoundException: play.core.server.NettyServer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
但我的问题更愚蠢:权限。检查正在执行应用程序的用户是否具有正确的权限。
只是为了记录,所以其他人可以节省时间。