문제

Junit4.7과 함께 제공되는 샘플 테스트를 실행하고 약간의 어려움이 있습니다.

java 내 존경하고 있습니다 CLASSPATH:

me@dinosaurhunter ~/Desktop> export CLASSPATH=
me@dinosaurhunter ~/Desktop> echo $CLASSPATH

me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner
me@dinosaurhunter ~/Desktop> source /etc/profile 
me@dinosaurhunter ~/Desktop> echo $CLASSPATH
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar
me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/Test
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at junit.runner.BaseTestRunner.loadSuiteClass(BaseTestRunner.java:207)
    at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:100)
    at junit.textui.TestRunner.start(TestRunner.java:179)
    at junit.textui.TestRunner.main(TestRunner.java:138)

그러나 보시다시피, 그것은 찾을 수 없습니다 junit/framework/Test... 나는 /Library/Java/Extensions/junit/junit.jar 그리고 그것은 포함되어 있습니다.

/Library/Java/Extensions/junit/junit.jar Symlink입니다. 괜찮아?

도움이 되었습니까?

해결책

Junit Jar 파일을 하위 디렉토리를 작성하는 대신 확장 디렉토리에 직접 넣으십시오. 방금 Junit-4.6.jar를/library/java/extenstions 디렉토리에 복사하고 아무런 문제없이 Testrunner 클래스를 실행했습니다.

% java junit.textui.TestRunner
Usage: TestRunner [-wait] testCaseName, where name is the name of the TestCase class

Extensions 디렉토리에서 라이브러리를 삭제하면 예상 예외가 발생합니다.

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner

다른 팁

좋아, 방금 Junit 4.7을 다운로드하고, 포장을 풀고, 디렉토리를 폴더로 변경하고 다음 명령을 성공적으로 실행했습니다.

$ java -cp .:junit-4.7.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 3.255

OK (130 tests)

그것은 OSX에있었습니다.

나는 당신의 예에서 당신의 클래스 경로가 약간 엉망이라고 생각합니다. 이 시도:

.:/Library/Java/Extensions/junit:/Library/Java/Extensions/junit/junit.jar

차이점을 보시겠습니까? 나는 그것을 추가했다 . (현재 디렉토리) 및 Junit 디렉토리에서 후행 슬래시를 제거했습니다.

업데이트 : 방금 Symlink로 테스트 했는데도 작동하는 것으로 보입니다.

$ ln -s junit-4.7.jar junit.jar
$ java -cp .:junit.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 2.569

OK (130 tests)

항아리를 직접 만들었습니까? 항아리가 주석없이 만들어진 것처럼 보입니다.

주니트를 컴파일하면

  javac -proc none ...

이 오류가 발생합니다.

조사해야 할 사항 :

Junit.jar 파일은 지정한 위치에 있으며 읽을 수 있습니까? ClassPath가 /etc /profile에 의해 내보내십니까? 명령 줄에서 "-cp $ classpath"를 설정할 때 작동합니까? 클래스 경로에서 주요 결장을 제거해보십시오. 거기에있어서는 안됩니다.

Symlink를 사용하면 문제가 발생할 수 있습니다. Symlink가 가리키고있는 항아리를 추가하려고합니다.

그러나 Mac OS X의 Java Man 페이지 그런 제한이없는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top