在IntelliJ中运行测试出现ClassNotFoundException错误

4
我尝试了许多不同的运行配置,但无论我做什么,在IntelliJ中运行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)

你尝试过清理并重建所有内容吗?你的所有源代码都在被编译吗?这确实是一个奇怪的错误。 - Daniel Langdon
@DanielL.,是的,我尝试了清理一切并重新构建 - 没有帮助。而且这确实是一个IntelliJ问题,因为如果我在命令行中键入mvn test,则测试可以正常工作。 - vrepsys
然后我什么也没有得到。我会尝试不同的SDK,只是为了好玩,也许通过小步骤来删除和重新添加功能。 :-( - Daniel Langdon
1个回答

1

$符号结尾的类是从编译后的Scala对象生成的。这意味着您可能定义了一个类似于这样的对象:

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

object AppControllerIT {
}

从你的错误看来,似乎是一个旧的编译好的构件或库污染了你的类路径。首先,尝试清理项目(mvn cleansbt clean)。接下来,在IntelliJ中清理你项目中的任何库。IntelliJ有时会缓存同一库的多个版本,这可能会在运行时造成混淆。要清理它们,请在IntelliJ中转到“文件 -> 项目结构”,并手动删除可能存在的任何重复库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接