正如问题标题一样。我用喷雾servlet构建.war。我尝试在jetty和jboss-7上部署它,但两者都给了我同样的错误:
java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
at spray.http.Uri$Query.<init>(Uri.scala:496)
at spray.http.Uri$Query$Empty$.<init>(Uri.scala:575)
at spray.http.Uri$Query$Empty$.<clinit>(Uri.scala)
at spray.http.parser.UriParser.<init>(UriParser.scala:37)
at spray.http.Uri$.apply(Uri.scala:231)
at spray.http.Uri$.apply(Uri.scala:203)
at spray.http.Uri$.<init>(Uri.scala:194)
at spray.http.Uri$.<clinit>(Uri.scala)
at spray.http.Uri$Path$.build$1(Uri.scala:427)
at spray.http.Uri$Path$.apply(Uri.scala:428)
at spray.servlet.ConnectorSettings$.fromSubConfig(ConnectorSettings.scala:52)
at spray.servlet.ConnectorSettings$.fromSubConfig(ConnectorSettings.scala:46)
at spray.util.SettingsCompanion.apply(SettingsCompanion.scala:50)
at spray.servlet.Initializer$$anonfun$contextInitialized$1.apply$mcV$sp(Initializer.scala:40)
at akka.util.Switch.transcend(LockUtil.scala:27)
at akka.util.Switch.switchOn(LockUtil.scala:48)
at spray.servlet.Initializer.contextInitialized(Initializer.scala:33)
....
我检查了.war并且有WEB-INF / lib / scala-library-2.11.0.jar,因此该类应该是可访问的。可能是错误的原因是什么?
答案 0 :(得分:2)
我遇到了使用不同设置的相同错误消息。我在一个独立的应用程序中使用了spray-client(没有JBoss)。
原因是虽然我使用Spray 1.3.1,它应该在Scala 2.11上运行,我实际上从Maven仓库获得的版本(我在我的项目中使用Maven)是针对Scala 2.10构建的。如果您想亲眼看看,请查看POM。
所以,我采取的措施是
<repositories> <repository> <id>spray</id> <name>Spray IO</name> <url>http://repo.spray.io</url> </repository> </repositories>
<dependency> <groupId>io.spray</groupId> <artifactId>spray-client_2.11</artifactId> <version>1.3.1-20140423</version> </dependency>
对于SBT来说
"io.spray" %% "spray-client" % "1.3.1-20140423"
更新:不确定之前是否存在或最近刚添加它,但Spray homepage现在还建议使用该版本。