programing

Eclipse의 JUNIT 테스트 클래스-java.lang.ClassNotFoundException

firstcheck 2021. 1. 15. 08:17
반응형

Eclipse의 JUNIT 테스트 클래스-java.lang.ClassNotFoundException


(속성 파일이 올바르게로드되는지 확인하기 위해) 내 junit 테스트를 실행하려고하는데 ClassNotFoundException클래스가 있고 필요한 모든 라이브러리도 있습니다.

여기에 내가 얻는 오류가 있습니다.

Class not found ConfigurationManagerTest                                                 java.lang.ClassNotFoundException: ConfigurationManagerTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

감사.


ConfigurationManagerTest클래스 경로에서 찾을 수 없습니다. ConfigurationManagerTest.class파일이 클래스 경로에서 사용 가능한지 확인하십시오 .

성공적으로 컴파일되지 않았거나 Eclipse 프로젝트가 클래스 경로에 있어야한다고 말하지 않은 디렉토리에 생성되는 경우 존재하지 않을 수 있습니다.

테스트 클래스를 별도의 폴더에 넣었다고 가정하고 "내비게이터"보기가 아닌 "패키지 탐색기"보기에 표시되는지 확인하십시오.

프로젝트 속성, "Java 빌드 경로"및 "소스"탭에서 소스 폴더가 빌드에 포함되어 있는지 여부와 .class 파일이 생성되는 위치를 확인할 수도 있습니다.


한 가지 더 가능성이 있습니다. 나는 방금 같은 문제가 있었고 여기에 해결책 중 어느 것도 도움이되지 않았습니다. 프로젝트를 제거하고 다시 만드는 것을 제외하고는 시도하고 싶지 않았습니다. 도움이 된 것은 프로젝트를 차례로 두 번 즉시 청소 하는 것이 었습니다 ! 정리 + 빌드는 여러 번 반복 될 수 있습니다. 도움이되지 않습니다. 깨끗하고 깨끗하고 그 빌드 후에는 괜찮습니다. (Eclipse 3.6). 물론 자동 빌드를 비활성화해야합니다.

편집 :이 게시물은 2017 년 11 월 15 일에 마지막 플러스를 받았습니다. 따라서 문제 (및 솔루션)는 실제 상태로 유지됩니다.


또 다른 가능한 문제는 빌더 누락입니다 (.class 파일이 빌드되지 않도록 방지 함).

.project 파일에 다음 줄이 있는지 확인하십시오.

<buildSpec>
  <buildCommand>
    <name>org.eclipse.jdt.core.javabuilder</name>
    <arguments>
    </arguments>
  </buildCommand>
</buildSpec>
<natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

테스트 클래스를 다른 패키지로 끌어다 놓을 때 이런 일이 발생했습니다. 방금 다음을 수행했습니다.

  1. 텍스트 편집기에서 클래스를 저장했습니다.
  2. Eclipse 프로젝트 탐색기에서 문제가되는 클래스를 삭제했습니다.
  3. 수업을 다시 만들었습니다.

빙고! 이제 테스트를 실행할 수 있습니다!


나는이 문제가 있었고 무엇이 잘못되었는지 깨닫는 것이 다소 까다 롭습니다. 프로젝트에 오류가있는 종속성 프로젝트가있어 빌드 실행이 중지되었습니다. 이 종속성 문제를 제거하면 프로젝트가 예상대로 빌드되었습니다.

추신 : 저는 Delphi에서 Java로 변환 된 애플리케이션을 포팅하고 있기 때문에 컴파일 오류가 많은 프로젝트를 진행하고 있습니다. 그래서 처음에는 컴파일 오류에 신경 쓰지 않았기 때문에 시간이 좀 걸렸습니다. 문제를 찾아 내십시오.


속성-> 자바 빌드 경로-> 라이브러리를 확인하십시오. 오류가 없어야합니다. 제 경우에는 maven에 오류가 있습니다. 필요한 항아리를 maven repo에 넣으면 잘 작동했습니다.


나는 여기에 설명 된 모든 답변을 시도했지만 아무것도 작동하지 않았지만 slomek이 문제를 매우 쉽게 해결하는 스레드를 발견했습니다 . 프로젝트-> 속성-> Java 빌드 경로로 이동하십시오. 그런 다음 위쪽 아래쪽을 오른쪽으로 눌러 Junit을 위쪽으로 이동합니다. 그러면 모든 것이 잘 컴파일됩니다.


나는 여기와 다른 게시물에서 언급 된 모든 것을 시도했습니다. 사람들이 제안한 솔루션 중 일부는 다음과 같습니다.

  1. 테스트를 위해 출력 폴더 변경
  2. Maven에서 테스트 컴파일을 실행할 프로젝트에 대한 사용자 지정 빌더를 만듭니다.
  3. 프로젝트 빌드 경로의 주문 및 내보내기 목록에서 Maven 종속성을 더 높게 이동합니다.

훨씬 더 많았지 만 제가 작업 한 것은 다음과 같습니다. 개발 환경을 닫습니다. 내 로컬 Maven 저장소에서 프로젝트에서 사용하는 jar를 삭제합니다. IDE를 엽니 다. 프로젝트를 빌드하십시오. 테스트를 실행하십시오.

몇 시간 동안 키보드에 머리를 대고 제안 된 솔루션을 따랐을 때이 방법이 작동했습니다!


나를 위해 일한 것은 테스트의 실행 구성을 제거하는 것입니다. 그런 다음 testclass를 마우스 오른쪽 단추로 클릭하고 junit 테스트로 실행을 클릭하십시오.

이제 올바른 실행 구성을 다시 만듭니다.


이것이 전개 될 수있는 또 다른 방법은 Eclipse가 알려주지 않는 빌드 오류가있는 경우입니다. 단위 테스트 컴파일이 실패하면 .class 파일이없고 ClassNotFoundException이 발생합니다.

제 경우에는 타사 jar 파일이 누락되었습니다. 테스트를 실행했을 때 "필요한 프로젝트에 오류가 있습니다"라는 팝업 창이 나타납니다. 저는 거대한 프로젝트로 작업하고 있으며 일부 소스를 식에 사용할 수 없기 때문에 항상 그 메시지를받습니다 (긴 이야기). 또한 오류가 무엇인지 말하지 않습니다. 그래서 "계속"을 클릭하면 예외가 발생합니다.

무슨 일이 일어나고 있는지 깨달았을 때 Run-> Debug Configurations ...에서 누락 된 jar를 클래스 경로에 추가하여 쉽게 수정할 수 있습니다.

문제가 발생했을 때이 가능성을 인식하고 잘못되었을 수있는 최근 변경 사항을 검토하는 것 외에는이를 가장 잘 감지하거나 방지하는 방법을 잘 모르겠습니다.


테스트 클래스가 빌드 폴더에 있습니까? 별도의 JVM (fork = true)에서 junit을 호출하므로 해당 호출 중에 작업 폴더가 변경되고 빌드가 상대적으로 변경되어 문제가 발생할 수 있습니다.

-verbose 또는 -debug 스위치를 사용하여 명령 줄 (Eclipse가 아님)에서 ant를 실행하여 자세한 클래스 경로 / 작업 디렉토리 junit이 호출되는지 확인하고 여전히이 문제를 해결할 수없는 경우 여기에 결과를 게시합니다.


추가 빌더를 포함하여 위의 Guy의 답변에 대한 변형. Ant 빌더가 구성되어 있다고 가정하십시오.

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
        <arguments>
            <dictionary>
                <key>LaunchConfigHandle</key>
                <value>&lt;project&gt;/.externalToolBuilders/myprojectantlaunch.launch</value>
            </dictionary>
        </arguments>
    </buildCommand>
</buildSpec>

Ant 빌드와 Eclipse 빌드의 출력 위치가 다른 경우 Eclipse가 클래스 경로에서 테스트 클래스를 찾지 못할 수 있습니다. Ant 빌더의 경우에는 클린, 자동, 수동 및 사후 클린 빌드에 대해 구성된 대상을 확인하여 단위 테스트를 빌드하는 대상이 호출되는지 확인하십시오.


이 답변을 위의 솔루션 검토로 추가합니다.

  1. .project주 프로젝트 폴더에서 파일 편집하기 만하면 됩니다. 적절한 XML 편집기를 사용하십시오. 그렇지 않으면 fatal error이 프로젝트를 열 수 없다는 통계를 Eclipse에서 얻을 수 있습니다.
  2. 나는 내 프로젝트의 성격을 만들어 Java이 추가 <nature>org.eclipse.jdt.core.javanature</nature><natures></natures>.
  3. 그런 다음 해당 줄 <buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand><buildSpec></buildSpec>.
  4. Run as JUnit... 성공

Right click the project in the Explorer: Build Path -> Order and Export -> Select JRE System Library [jdk] and click Bottom button.


Yet another variation.
Somehow, my formerly working test classes appeared to be running from some other location; my edits would not execute when I ran the tests.

I found that the output folder for my ${project_loc}src/test/java files was not what I expected. It had inadvertently been set to ${project_loc}target/classes. I set it properly in project properties, Java Build Path, Source tab.


If you have a maven project try to run:

mvn clean compile

and then in eclipse clean & build your project.


I had the similar problem with my Eclipse Helios which debugging Junits. My problem was little different as i was able to run Junits successfully but when i was getting ClassNotFoundException while debugging the same JUNITs.

I have tried all sort of different solutions available in Stackoverflow.com and forums elsewhere, but nothing seem to work. After banging my head with these issue for close to two days, finally i figured out the solution to it.

If none of the solutions seem to work, just delete the .metadata folder created in your workspace. This would create an additional overhead of importing the projects and all sorts of configuration you have done, but these will surely solve these issue.

Hope these helps.


In "Package Explorer" view, Right click your test class, then "Build Path">>"Include", it should be OK.


I too faced the same exception, none of the solutions over internet helped me out. my project contains multiple modules. My Junit code resides in Web module. And it's referring to client module's code.

Finally , I tried : Right click on (Web module) project -->build path--> source tab--> Link source --> added the src files location (Client module's)

Thats it! It worked like a charm Hope it helps


I received this error because I had recently created a new workspace and my "Installed JREs" were not set up correctly. Make sure in Preferences -> Java -> Installed JREs the root folder of your JDK is selected. The default for me in a new workspace was a JRE for some reason.


I know this has been already answered a long time ago but the answer didnt fix it for me but, I just removed everything from the sources in the buildpath settings and re-added them


I had this problem, in my case the problem relies in the compilation, I am using maven and test classes didn't compile.

I fixed it by doing a maven install (it compiles all the files), also you can check for other reasons, that avoid test to compile like if your "run configurations" is skipping the tests to save time.


  • Assumming you tried everything reasonable (delete target, refresh, clean, rebuild, maven install...) and that you realized that Eclipse does not behave reasonable...
  • Now: Check if there is no errors suggesting it can be a plugin (any plugin) that has something to do with tests.

  • In my case:

    • I removed EclEmma.
    • It started working...

Spent few hours on trying to guess it!.


Please make sure the output folder in Java Build Path tab set as like below,which would determine where the .class file are generated.Then clean the project.

enter image description here

ReferenceURL : https://stackoverflow.com/questions/5716308/junit-test-class-in-eclipse-java-lang-classnotfoundexception

반응형