2015-05-20 3 views
3

Я пробовал много разных конфигураций запуска, но что бы ни делал, я получаю это исключение при запуске тестов specs2 в IntelliJ для scala.Запуск тестов в IntelliJ ClassNotFoundException

Он всегда не может найти класс, который заканчивается знаком $. Я проверил - и такого файла класса действительно нет. Есть 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

Вы пробовали очистить и перестроить все? Собираются ли все ваши источники? Это действительно странная ошибка. –

+0

@ DanielL., Да, попробовал очистить все и перестроить - ничего не помогает. И это действительно проблема IntelliJ, потому что тесты работают, если я печатаю тест mvn в командной строке – vrepsys

+0

Тогда я ничего не получил. Я попробовал разные SDK просто для ударов, возможно, удаляя и повторно добавляя функциональность небольшими шагами. :-( –

ответ

1

Классы с $ знаками в конце являются сформировать из скомпилированных объектов Scala. Это означает, что вы можете иметь объект, определенный подобным этому:

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

object AppControllerIT { 
} 

С вашей ошибки, кажется, что старая скомпилирован артефакт или библиотека загрязняя свой путь к классам (?). Сначала попробуйте очистить проект (mvn clean или sbt clean). Затем попробуйте очистить любые библиотеки, которые у вас есть в проекте внутри IntelliJ. IntelliJ иногда кэширует несколько версий тех же библиотек, которые могут вызвать путаницу во время выполнения. Чтобы очистить их, перейдите в «Файл -> Структура проекта» в IntelliJ и вручную удалите любые дублированные библиотеки, которые у вас могут быть.