java.displaces를 클릭합니다.No Class Def Found Error : org / hamcrest / Self Describing
중junit
eclipse
Exception
:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
추가했습니다.junit.jar
라이브러리 파일
junit.jar의 다른 4.4
,4.8
등등.
이 예외를 수정하려면 어떻게 해야 하나요?
hamcrest-all-X.X.jar
당신의 클래스 패스로요.
2015년 2월 현재 최신 버전은 1.3 입니다.http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q =
JUnit GitHub 팀 웹사이트(https://github.com/junit-team/junit/wiki/Download-and-Install),에 따르면junit.jar
★★★★★★★★★★★★★★★★★」hamcrest-core.jar
4.사용하는 클래스 에 둘 다 합니다.
이것은 Junit과 Hamcrest를 포함하기 위한 Maven 의존관계 블록입니다.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1.2</version>
<scope>test</scope>
</dependency>
<!-- Needed by junit -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
몇 가지 절차를 따라야 합니다.
- 프로젝트를 오른쪽 클릭합니다.
- 메뉴에서 Build Path를 선택한 다음 Add Libraries를 선택합니다.
- JUnit을 선택하고 Next를 클릭합니다.
- JUnit4를 선택하고 Finish를 선택합니다.
인텔리J IDEA 13.1.1, JUnit4, Java 6 지원
프로젝트 경로의 [PROJECT_NAME.iml] 파일을 변경하였습니다.
대체:
<library>
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
기준:
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
마지막 .iml 파일은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="JUnit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
<root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
추신: 파일을 저장하고 IntelliJ Idea에 다시 로드하지 마십시오.딱 한 번만.
junit-dep.jar가 필요한 이유는 junit.jar가 오래된 Hamcrest 클래스의 복사본을 가지고 있기 때문입니다.
혹시 여기 팥을 사용하는 사람이 있는데 같은 문제가 있는 경우, 당신이 해야 할 일은 이것뿐입니다.
- TestLibraries 우클릭
- 라이브러리 추가를 클릭합니다.
- JUnit을 선택하고 라이브러리 추가를 클릭합니다.
- 프로세스를 반복하지만 이번에는 [Hamcrest]를 클릭하여 [Add Library]을 클릭합니다.
이것으로 문제가 해결됩니다.
이 문제는 클래스 패스의 miss hamcrest-core-1.3.jar가 원인입니다.이 문제를 해결하려면 junit-4를 추가할 때 hamcrest-core-1.3.jar를 추가합니다.XX.jar를 클래스 패스에 넣습니다.
처음에는 저도 이 문제가 발생하지만 공식 사이트를 참조하여 명령줄을 사용하여 클래스 패스에 hamcrest-core-1.3.jar를 추가하면 정상적으로 동작합니다.
javac -d ../../../../bin/ -cp ~/libs/junit-4.12.jar:/home/limxtop/projects/algorithms/bin MaxHeapTest.java
java -cp ../../../../bin/:/home/limxtop/libs/junit-4.12.jar:/home/limxtop/libs/hamcrest-core-1.3.jar org.junit.runner.JUnitCore com.limxtop.heap.MaxHeapTest
다음 설명에 따라 hamcrest-core JAR을 클래스 경로에 추가해야 합니다.https://github.com/junit-team/junit4/wiki/Download-and-Install
일반적으로 클래스 경로 상의 다른 테스트 라이브러리보다 햄크레스트가 먼저 있는지 확인합니다.이러한 라이브러리의 대부분은 햄크레스트 클래스를 포함하고 있기 때문에 사용하고 있는 햄크레스트 버전과 경합할 수 있습니다.이렇게 하면 설명하는 유형의 문제가 대부분 해결됩니다.
문제를 해결하는 가장 간단한 방법은 최신 버전의 hamcrest-code.jar를 CLASSPATH에 복사하는 것입니다.이 파일은 응용 프로그램의 컴파일 및 실행에 필요한 다른 .jar 파일을 저장하는 파일입니다.
예를 들어 다음과 같습니다.C:/ant/lib
수업경로 문제처럼 들리므로 몇 가지 다른 방법이 있습니다.org/hamcret/SelfDescription은 어디서 유래한 것입니까?그게 네 반이야, 아니면 다른 병이야?
프로젝트 빌드 경로로 이동하여 라이브러리 탭에서 라이브러리를 추가하십시오.프로젝트에 JUnit을 선택할 수 있어야 합니다.이건 자네 프로젝트에 JUnit jar 파일을 가지고 있는 것과는 좀 다르네
JUnit의 Configuration 실행 테스트에서 Classpath를 확인합니다.Classpath에서 SelfDescribing 클래스가 표시되는지 확인함으로써 이 문제를 해결할 수 있습니다.Eclipse의 실행 옵션에는 JUnit 옵션에 대한 다른 옵션 세트가 있습니다.
RCP 프로젝트에서 이 문제가 발생할 경우 JUnit이 명시적으로 Import되었기 때문일 수 있습니다.
에 있는 「」를해 주세요.plugin.xml
아래Dependencies
', '를 합니다.org.junit
org.junit
이치노
문제는 JDK가 아닌 JRE를 가리키도록 이클립스를 설정하는 경우입니다.JRE는junit4.jar
lib/ext
, 폴더는 없습니다.hamcrest.jar
:) 솔루션은 Eclipse에 설치된 JRE를 확인하고 기존 JRE를 제거한 후 JDK를 가리키는 새 JRE를 작성하는 것입니다.
이 문제는 명령줄에서 개미를 실행할 때 발생합니다.암묵적인 사용자 종속성은 마지막에 클래스 경로에 추가되며 프로젝트 추가 클래스 경로보다 우선합니다.깃발을 들고 개미에게 달려라.암시적 종속성은 클래스 경로에서 제외됩니다.
이 문제를 해결할 더 좋은 답이 있다.종속성을 더하다
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
maven 저장소에서 사용할 수 있는hamcrest-core-1.3.jar는 권장되지 않습니다.
다운로드 ★★★★★★★★★★★★hamcrest-core-1.3.jar
Junit4 github 공식 링크에서.maven 저장소에서 다운로드하려면 최신 버전을 사용하십시오.hamcrest-XX.jar
.
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
같은 문제가 있었습니다.해결 방법은 빌드 경로/플러그인 org.hamcrest.core_1xx에 추가하는 것입니다.이클립스/플러그인에서 찾을 수 있습니다.
몇 가지 절차를 따라야 합니다.
- 프로젝트를 오른쪽 클릭합니다.
- [ Build Path ]를 선택하고 메뉴에서 [Add Libraries]를 선택합니다.
- JUnit을 선택하고 Next를 클릭합니다.
- JUnit4를 선택하고 Finish를 선택합니다.
난 이거면 되는데...
"198.1994.보안.예외: class" org.hamcrest."메쳐의 서명자 정보가 동일한 패키지에 포함된 다른 클래스의 서명자 정보와 일치하지 않습니다."
실행: 패키지를 우클릭하여 빌드 경로 -> 빌드 경로 구성 라이브러리 탭을 클릭하여 JUnit 적용 삭제 후 준비 종료합니다.
jar 파일을 수동으로 추가하거나 최신 hamcrest.jar를 사용하여 force update를 시도합니다.
언급URL : https://stackoverflow.com/questions/14539072/java-lang-noclassdeffounderror-org-hamcrest-selfdescribing
'programing' 카테고리의 다른 글
IPython 노트북에 이미지 삽입 마크다운 (0) | 2023.01.19 |
---|---|
java how to ArrayList 푸시, 팝, 시프트 및 언시프트 (0) | 2023.01.19 |
디코딩의 차이점은 무엇입니까?URIC 구성 요소와 decodeURI? (0) | 2023.01.19 |
MariaDB 서비스를 계속 시작하지 못했습니다. (0) | 2023.01.19 |
열 정렬을 utf8mb4_general_ci에서 utf8mb4_bin으로 변경하면 테이블이 손상됨 (0) | 2023.01.19 |