Не удалось найти класс В JUnit 4.11

прежде всего, Я просмотрел все подобные вопросы о переполнении стека, и пока ничего не сработало для меня. Просто пытаюсь заставить JUnit работать с простым примером из книги JUnit in Action 2nd Edition Петра Тахчиева.

.java
public class Calculator {
    public double add(double number1, double number2) {
        return number1 + number2;
    }
}

CalculatorTest.java

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calc = new Calculator();
        double result = calc.add(1,1);
        assertEquals(2, result,0);
    }
}

мои папки: Current Folder

Я компиляции с:

javac -cp junit-4.11.jar *.java

моя папка после компиляции: Current Folder after compiling

Я пытаюсь запустить тест с:

java -cp junit-4.11.jar;hamcrest-core-1.3.jar;. org.junit.runner.JUnitCore CalculatorTest

это мой выход:

Output

когда я пытаюсь запустить отдельные классы, jre находит их, но не выдает ошибку основного метода, которая ожидается:

java Calculator
java CalculatorTest

выходы(которые ожидались, но он нашел классы): Error 1Error 2

есть идеи, как я могу получить JUnit / что бы это ни было, чтобы вести себя?

[EDIT]
Я запускаю все команды в C:UsersZachDocumentsdocsCodeJUnit
Скриншоты выше того же папка.
Я использую jdk1.7.0_45 и jre7
Я использую Windows 7 Professional N 64-бит

я запустил команду java с помощью-verbose: class и не было никаких ошибок, кроме одной в строке 426, которая видна ниже: verbose error

1 ответов


увлекательный. В любом случае, похоже, у вас есть junit-4.11.jar в lib / ext в вашем JRE. Это расположение предпочтительнее пути к классам, а классы, загруженные в этот каталог, загружаются в отдельный загрузчик классов.

что lib / ext classloader не может видеть класс, загруженный classpath classloader и, следовательно, JUnit не может видеть ваш код. Если вы используете Junit из командной строки таким образом, вероятно, лучше не помещать банку в папку lib/ext. Если вы бегали это программно (например, JUnitCore.runClasses(...)) затем вы можете загрузить свои классы с помощью обычного загрузчика классов и передать их JUnit в уединенный загрузчик классов, и все будет хорошо.

Итак, короткий ответ, вероятно, удалить junit jar из папки lib / ext, если вы знаете, почему он был там в первую очередь, и эта причина больше не действительна.