我尝试了很多不同的运行配置,但无论我做什么,我在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)
答案 0 :(得分:1)
末尾带有$
符号的类是从已编译的Scala对象生成的。这意味着您可能有一个与此类似的对象:
package com.haha.market.api.e2e.controllers
object AppControllerIT {
}
从您的错误中,似乎较旧的编译工件或库(?)污染您的类路径。首先,尝试清理项目(mvn clean
或sbt clean
)。接下来,尝试清除IntelliJ中项目中的所有库。 IntelliJ有时会缓存相同库的多个版本,这可能会在运行时导致混淆。要清理它们,请转到IntelliJ中的“文件 - >项目结构”,然后手动删除您可能拥有的任何重复库。