ClassNotFoundException when running a junit test in eclipse

23,065

Solution 1

Seems like some kind of weird eclipse issue, that will be difficult for us to diagnose, but the brute-force approach will be this: if you have maven on your project, just delete your project from your eclipse workspace (do not delete files), then from command line do:

mvn clean install eclipse:clean eclipse:eclipse

then re-import your existing project back into your eclipse workspace. should work fine after this procedure.

EDIT

Launch your test and switch to Debug perspective. You will see in the Debug view your most recent launch. Select it and go to its properties (shortcut: Alt+Enter). In the "command line" section you should see what was the exact command Eclipse used to launch your unit test. Check the classpath looks ok. It may be just some weird eclipse project setup. Maven will use a different classpath for running your tests, it may be that Eclipse is looking for your unit test in the wrong directory. If you class is in the classspath, then it must work.

Solution 2

I ran into this problem while working on a project with both Eclipse and mvn-on-the-command-line concurrently.

A command line-initiated mvn clean had removed the ./target/ directory which Eclipse's JUnit support also relied upon to find compiled JUnit test classes.

I resolved the Eclipse-based ClassNotFoundException by running mvn test from the command line first. From then on, Eclipse found the test class again.

Solution 3

Delete the following files/folders from the Eclipse project:

.project .classpath .settings

Then re-import the project using "Import -> Existing Maven Projects".

This should have the same effect as Peter's answer except no need to go to command line.

Share:
23,065
hudi
Author by

hudi

Updated on July 09, 2022

Comments

  • hudi
    hudi almost 2 years

    I am really desperate why this exception can even occurs ? I am running test in class MyTestIT. And what class is not found ? Class which I run... I tried to clean and build it again in eclipse but with no success

     Class not found it.mytest.MyTestIT
        java.lang.ClassNotFoundException: it.mytest.MyTestIT
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
            at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
    

    PS: I forgot to add it was working whole time. But today I just turn on eclipse and I cant run test here. With maven it is still working

  • hudi
    hudi almost 9 years
    with maven test are still working. Just in eclipse there is problem
  • hudi
    hudi almost 9 years
    hm thx this should work but I cant really understand how this error even occurs and how should I avoid it. My project is really huge and importing all necessary projects take over a couple of time
  • BPS
    BPS over 7 years
    You can also do this from within Eclipse. I'll post a separate answer.
  • terencefung
    terencefung over 2 years
    thx, I used the above command and then go to project>build all, and it works!