我有一个ScalaTest测试,我正试图通过右键单击run as > ScalaTest File
来运行它,但Eclipse告诉我
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function1
at scala.tools.eclipse.scalatest.launching.ScalaTestLauncher.main(ScalaTestLauncher.scala)
Caused by: java.lang.ClassNotFoundException: scala.Function1
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
我不知道该怎么做。
我正在使用Eclipse的Scala IDE版本
构建ID:3.0.4-2.11-20140723-2253-Typesafe
版本4.3.0
我正在使用Scala版本2.11.1
ScalaTest版本2.11-2.1.6
我通过Typesafe Activator程序获得了Scala和ScalaTest,并从他们的webapp生成了Eclipse项目定义。 ScalaTest插件来自Scala IDE网站。
答案 0 :(得分:4)
我在4.1.1-vfinal-20150727-1320-Typesafe
的{{1}}版本中收到此例外。这是因为项目缺少Scala库,尽管事实上我将我的项目创建为Scala项目。我必须通过右键单击并选择Scala IDE Eclipse 4.3.0
在添加库之前,它看起来像这样:
添加库并运行ScalaTest测试后,它看起来像这样:
有人可能会猜到,当使用Add Scala Library to Build Path
创建Scala Library
的项目时,会自动添加Scala Nature
- 至少我这样做了。但是,情况似乎并非如此。如果这是一个设计选择,它可能已经完成,因为Scala Project Wizard
通常被指定为项目的依赖项,而IDE添加的版本是一个不同的版本,导致令人惊讶的行为以及IDE警告那种效果。如果这是理由,则向导应提示用户决定并提供智能推荐。
答案 1 :(得分:0)
您使用的是 sbt 吗?使用“sbt eclipse”时可能会出现此错误。解决方案是升级sbteclipse 插件。它适用于最新版本(绝对是4.0.0)。
旧版本插件的问题在于它不会在.classpath文件中生成“org.scala-ide.sdt.launching.SCALA_CONTAINER”。