【问题标题】:sbt test gives: java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class"sbt 测试给出:java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class"
【发布时间】:2017-02-25 19:45:47
【问题描述】:

当我运行“sbt test”时,我得到: "[错误] (test:executeTests) java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class"

我猜我正在运行一个特定的 Scala 版本,而 ScalaTest 期待一个不同的 Scala 版本。但是为什么会这样,我不知道!我想我正在使用 Scala 2.11,这也是 ScalaTest 应该期待的。

感兴趣的可能是我实际上并没有使用 ScalaTest。我只使用 JUnit 测试。

该项目可以在on GitHub找到。 我正在使用这个 sbt 文件:

name := "ParticleCompilerSbt"    
version := "1.0"    
scalaVersion := "2.11.8"

libraryDependencies += "com.fifesoft" % "rsyntaxtextarea" % "2.5.8"    
libraryDependencies += "org.swinglabs" % "swingx" % "1.6.1"    
libraryDependencies += "jgraph" % "jgraph" % "5.13.0.0"    
libraryDependencies += "org.tinyjee.jgraphx" % "jgraphx" % "2.3.0.5"    
libraryDependencies += "org.jgrapht" % "jgrapht-core" % "0.9.1"    
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "3.0.0" % "test"    
libraryDependencies += "junit" % "junit" % "4.12" % "test"    
libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % "test"    
libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.11.8"    
libraryDependencies += "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.5"    
libraryDependencies += "org.scala-lang.modules" % "scala-swing_2.11" % "2.0.0-M2"    
libraryDependencies += "org.scala-lang.modules" % "scala-parser-combinators_2.11" % "1.0.4"    
libraryDependencies += "org.apache.commons" % "commons-math3" % "3.5"    
libraryDependencies += "com.google.guava" % "guava" % "18.0"
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.10" % "2.1.3"
unmanagedResourceDirectories in Compile += baseDirectory.value / "testResources"

'sbt test' 给出以下堆栈跟踪:

java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
        at org.scalatest.ConfigMap.<init>(ConfigMap.scala:97)
        at org.scalatest.tools.Runner$.parsePropertiesArgsIntoMap(Runner.scala:2219)
        at org.scalatest.tools.Framework.runner(Framework.scala:1026)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:547)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:541)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.immutable.Map$Map2.foreach(Map.scala:130)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
        at scala.collection.AbstractTraversable.map(Traversable.scala:105)
        at sbt.Defaults$.createTestRunners(Defaults.scala:541)
        at sbt.Defaults$.allTestGroupsTask(Defaults.scala:561)
        at sbt.Defaults$$anonfun$testTasks$4.apply(Defaults.scala:424)
        at sbt.Defaults$$anonfun$testTasks$4.apply(Defaults.scala:424)
        at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
        at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: scala.collection.GenTraversableOnce$class
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.scalatest.ConfigMap.<init>(ConfigMap.scala:97)
        at org.scalatest.tools.Runner$.parsePropertiesArgsIntoMap(Runner.scala:2219)
        at org.scalatest.tools.Framework.runner(Framework.scala:1026)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:547)
        at sbt.Defaults$$anonfun$createTestRunners$1.apply(Defaults.scala:541)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at scala.collection.immutable.Map$Map2.foreach(Map.scala:130)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
        at scala.collection.AbstractTraversable.map(Traversable.scala:105)
        at sbt.Defaults$.createTestRunners(Defaults.scala:541)
        at sbt.Defaults$.allTestGroupsTask(Defaults.scala:561)
        at sbt.Defaults$$anonfun$testTasks$4.apply(Defaults.scala:424)
        at sbt.Defaults$$anonfun$testTasks$4.apply(Defaults.scala:424)
        at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:35)
        at scala.Function9$$anonfun$tupled$1.apply(Function9.scala:34)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

我已经被这个问题困扰了一段时间,所以感谢您的帮助!

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    这一行:

    libraryDependencies += "com.typesafe.akka" % "akka-actor_2.10" % "2.1.3"

    您正在加载依赖于 scala 2.10 的依赖项。我尝试将其升级到最新版本(2.4.11),但似乎有一些重大更改删除了akka.util.Convert 包。您可能需要找到他们将功能移动到哪里或自己编写实用程序函数。

    对于 scala 依赖项,我建议使用 %% 而不是 %,并且 sbt 会自动为您附加正确的 scala 版本。即代替

    libraryDependencies += "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.5"
    

    你会的

    libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.0.5"
    

    编辑:我认为akka.util.ByteString 中的ByteStringBuilder 是替代品。

    【讨论】:

    • 您好,感谢您的帮助。但是,我现在已经删除了 akka 依赖项,但仍然有同样的问题。我没有看到对 Scala 2.10 的任何其他依赖项。什么是检查 Scala 2.10 中是否有内容的好方法?
    • 也许尝试运行show dependencyClasspath 并搜索 2.10。如果您找不到任何东西并将更改提交给最新的 master,我也许可以克隆 repo 并查看一下。
    • 通过“显示依赖类路径”我找到了它。谢谢!
    • @Jacob Wang,我面临同样的问题,我有依赖项目,仍然使用 Scala 2.10,但是当前项目,我正在迁移到 2.11.7,这可能吗?如果可能的话,请帮助我。在上面,你说我不应该使用 2.10 罐子。但就我而言,我无法删除 2.10 依赖的基本模块 jar。
    • 这是可能的,但据我所知,这将非常复杂,不幸的是超出了我的知识范围。如果它是一个您可以修改源代码(或为开源项目发送 PR)的项目,我建议将其设置为您所依赖的项目,以便跨不同的 scala 版本进行交叉构建。见SBT cross-build docs
    猜你喜欢
    • 2017-03-06
    • 2020-12-28
    • 2016-07-03
    • 2017-01-01
    • 2019-06-23
    • 1970-01-01
    • 2017-07-18
    • 2016-08-04
    • 2020-01-02
    相关资源
    最近更新 更多