web-applications - 运行 Spray-servlet war 给出 java.lang.NoClassDefFoundError : scala/collection/GenTraversableOnce$class

标签 web-applications spray

正如问题标题所示。我用 Spray-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,因此该类应该可以访问。错误的原因可能是什么?

最佳答案

我在不同的设置下遇到了完全相同的错误消息。我在独立应用程序中使用 Spray-client(无 JBoss)。

原因是,虽然我使用的是应该在 Scala 2.11 上运行的 Spray 1.3.1,但我实际上从 Maven 存储库(我在项目中使用 Maven)获得的版本是针对 Scala 2.10 构建的。查看POM如果你想亲自看看。

所以,我所做的修复是

  1. 将 Spray 存储库添加到存储库列表
<repositories>
    <repository>
        <id>spray</id>
        <name>Spray IO</name>
        <url>http://repo.spray.io</url>
    </repository>
</repositories>
  1. 切换到 Spray 1.3.1 的每晚(?)版本
<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现在还建议使用该版本。

关于web-applications - 运行 Spray-servlet war 给出 java.lang.NoClassDefFoundError : scala/collection/GenTraversableOnce$class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23460872/

相关文章:

android - 始终保持相同的应用程序

database - 业务逻辑验证的好地方

web-applications - cookies 是如何工作的?

scala - 这可以做成尾递归吗?

java - Scala 案例类到 Spring POJO

java - 在 Web 应用程序中使用 twilio 进行语音通话

web-applications - 如何验证安全 https 页面加载时没有任何浏览器警告?

scala - 使用喷雾客户端进行多个请求时的 akka 超时

linux - 对于本地运行的 scala spray 服务器,curl localhost 有效,但 curl <local ip> 获取 "Connection refused"