Junit 및 Java Classpath Woes -OS X
문제
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 페이지 그런 제한이없는 것 같습니다.