ClassNotFoundException when running a junit test in eclipse
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.
hudi
Updated on July 09, 2022Comments
-
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 successClass 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 almost 9 yearswith maven test are still working. Just in eclipse there is problem
-
hudi almost 9 yearshm 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 over 7 yearsYou can also do this from within Eclipse. I'll post a separate answer.
-
terencefung over 2 yearsthx, I used the above command and then go to project>build all, and it works!