在IntelliJ ClassNotFoundException中运行测试

时间:2015-05-20 06:50:14

标签: scala testing intellij-idea specs2

我尝试了很多不同的运行配置,但无论我做什么,我在IntelliJ for scala中运行specs2测试时都会遇到此异常。

总是找不到以$符号结尾的类。我检查了 - 而且确实没有这样的类文件。有AppControllerIT.class和许多类,如AppControllerIT $ innerFunctionOrclass.clas,但不是AppControllerIT $ .class

有什么想法吗?

谢谢!

com.haha.market.api.e2e.controllers.AppControllerIT$

java.lang.ClassNotFoundException: com.haha.market.api.e2e.controllers.AppControllerIT$


STACKTRACE
  java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  org.specs2.reflect.Classes$$anonfun$loadClassEither$1.apply(Classes.scala:140)
  org.specs2.reflect.Classes$$anonfun$loadClassEither$1.apply(Classes.scala:140)
  org.specs2.control.ActionT$$anonfun$safe$1.apply(ActionT.scala:89)
  org.specs2.control.ActionT$$anonfun$reader$1$$anonfun$apply$6.apply(ActionT.scala:80)
  org.specs2.control.Status$.safe(Status.scala:100)

1 个答案:

答案 0 :(得分:1)

末尾带有$符号的类是从已编译的Scala对象生成的。这意味着您可能有一个与此类似的对象:

package com.haha.market.api.e2e.controllers

object AppControllerIT {
}

从您的错误中,似乎较旧的编译工件或库(?)污染您的类路径。首先,尝试清理项目(mvn cleansbt clean)。接下来,尝试清除IntelliJ中项目中的所有库。 IntelliJ有时会缓存相同库的多个版本,这可能会在运行时导致混淆。要清理它们,请转到IntelliJ中的“文件 - >项目结构”,然后手动删除您可能拥有的任何重复库。