Vscode-java-test: NoClassDefFoundError: org/junit/runner/JUnitCore

Created on 1 Dec 2017  路  20Comments  路  Source: microsoft/vscode-java-test

I can run tests in a single module project, but as soon as I have multiple modules (e.g. opening up https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples since that was what I was working on), I get this:

Error occured: Exception in thread "main" Error occured: java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
Error occured:  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:20)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more
need more info

Most helpful comment

Using 0.2.0 I still get the same errors:

Error occured: Exception in thread "main" Error occured: java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore Error occured: at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760)Error occured: at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) Error occured: at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) Error occured: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:20) Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) Error occured: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 13 more

All 20 comments

I'm having this issue as well, I have creating a fresh project using Maven, and trying to use this extension I get the above error.
Running mvn test works fine.

@dsyer @pandabrand thanks a lot for the feedback! I can repro it and it is class path resolution issue. I'm Working on it.

accidentally closed it when merging pr..

The issue has been fixed in 0.2.0 release. So I'm gonna close it. You are free to reopen it if it still doesn't work.

Using 0.2.0 I still get the same errors:

Error occured: Exception in thread "main" Error occured: java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore Error occured: at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760)Error occured: at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) Error occured: at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) Error occured: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:20) Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) Error occured: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 13 more

Using 0.2.0 as well also getting the same error
Error occured: Exception in thread "main" Error occured: java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore Error occured: at java.lang.ClassLoader.defineClass1(Native Method) Error occured: at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368)Error occured: at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) Error occured: at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:20) Error occured: Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) Error occured: ... 13 more

Maybe also good to mention that i use gradle, and when i run gradle test i get BUILD_SUCCESFUL
here is my build.gradle
`
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ("org.junit.platform:junit-platform-gradle-plugin:1.0.1")
}
}

apply plugin: "java"
apply plugin: "org.junit.platform.gradle.plugin"

repositories{
jcenter()
}

dependencies{
testCompile("org.junit.jupiter:junit-jupiter-api:5.0.1")

testRuntime(
    "org.junit.jupiter:junit-jupiter-engine:5.0.1",
    "org.junit.vintage:junit-vintage-engine:4.12.1",
    "org.junit.platform:junit-platform-launcher:1.0.1",
    "org.junit.platform:junit-platform-runner:1.0.1"
)

}

sourceSets {
main.java.srcDir "src"
test.java.srcDir "test"
}

`

I was able to resolve this problem in v0.3.0 by installing the Java IDE Pack extension. I can now Run Test and Debug Test directly in VSCode and view the Test Report.

I'm also having this issue on v0.3.0 and could not replicate @coderfin resoultion

Error occurred: Exception in thread "main" Error occurred: java.lang.NoClassDefFoundError: org/junit/runner/JUnitCoreError occurred:
Error occurred: at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
Error occurred: at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:20)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCoreError occurred:
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 10 more

seems some class path isn't successfully resolved, could someone help share a piece of code to repro the error?

BTW, which version of Junit are you using?

I'm running into the same issue. I downloaded the junit-4.12.jar and hamcrest-core-1.3.jar and placed them in my project's folder as per the JUnit installation guide, but the classpath generated by this extension that gets used in the command to run the tests seems not to be able to see jar files in the folder. I suggest apending ./* to the generated classpath.

@vasilescur which kind of project management are you using? maven, gradle or eclipse projects, .etc? could you check whether your project'classpath contains junit-4.12.jar?

@ansyral That solved my issue. I wasn't using any of those, just placing classes in a folder. I've (learned and) switched to using Gradle, and everything works fine now.

@Stiixxy are you using Junit5? We haven't supported it yet, we'll work on it soon.

I had the same issue.
My test were in the default package. It appear to have cleaned its self up when I put the test in a package and then restarted VSCode.


Maybe it has something to do with tests in the default package.

I added another test back in the default package

import static org.junit.Assert.assertNotNull;

import org.junit.Test;

public class TestFoo {
    @Test
    public void test() {
        assertNotNull(new String());
    }
}

and now I'm getting this:

@@<{"name":"testReporterAttached"}>
Error occurred: No test found to run.@@<{"name":"testReporterAttached"}>

and when I run mvn test it doesn't even run as a test.

@stejsoftware sorry I couldn't repro using your code. Could you check whether your pom.xml configure junit correctly?

Make sure you open the root folder of the project. If you open an individual file or a sub folder in VS code then you will see this error.

i have similar issues for some of the test cases in the project:

_{"userTag":false,"level":"info","message":"SLF4J: Found binding in [jar:file:/Users/jaygheewala/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]\nSLF4J: Found binding in [jar:file:/Users/jaygheewala/.m2/repository/org/slf4j/slf4j-simple/1.7.5/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]\nSLF4J: Found binding in [jar:file:/Users/jaygheewala/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]\nSLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\n","timestamp":"2018-10-20T17:14:53.403Z"}
{"userTag":false,"level":"error","message":"Error occurred: {\"name\":\"error\", \"attributes\":{\"message\":\"Failed to launch Junit\", \"details\":\"java.lang.NoSuchMethodError: ch.qos.logback.core.util.Loader.getResources(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;\n\tat ch.qos.logback.classic.util.ContextInitializer.multiplicityWarning(ContextInitializer.java:183)\n\tat ch.qos.logback.classic.util.ContextInitializer.statusOnResourceSearch(ContextInitializer.java:175)\n\tat ch.qos.logback.classic.util.ContextInitializer.getResource(ContextInitializer.java:141)\n\tat ch.qos.logback.classic.util.ContextInitializer.findURLOfDefaultConfigurationFile(ContextInitializer.java:125)\n\tat ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)\n\tat org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)\n\tat org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:55)\n\tat org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)\n\tat org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)\n\tat org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)\n\tat org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)\n\tat org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)\n\tat sf.analytics.JobExecutionTestBase.(JobExecutionTestBase.java:83)\n\tat java.lang.Class.forName0(Native Method)\n\tat java.lang.Class.forName(Class.java:264)\n\tat com.microsoft.java.test.runner.TestRunnerUtil.getRequestForClass(TestRunnerUtil.java:63)\n\tat com.microsoft.java.test.runner.TestRunnerUtil.createTestReferences(TestRunnerUtil.java:39)\n\tat com.microsoft.java.test.runner.CustomizedJUnitCoreRunner.run(CustomizedJUnitCoreRunner.java:25)\n\tat com.microsoft.java.test.runner.JUnitLauncher.execute(JUnitLauncher.java:26)\n\tat com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:15)\n\"}}","timestamp":"2018-10-20T17:14:53.513Z"}
{"userTag":false,"level":"info","message":"@@(StaticLoggerBinder.java:55)\n\tat org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)\n\tat org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)\n\tat org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)\n\tat org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)\n\tat org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)\n\tat sf.analytics.JobExecutionTestBase.(JobExecutionTestBase.java:83)\n\tat java.lang.Class.forName0(Native Method)\n\tat java.lang.Class.forName(Class.java:264)\n\tat com.microsoft.java.test.runner.TestRunnerUtil.getRequestForClass(TestRunnerUtil.java:63)\n\tat com.microsoft.java.test.runner.TestRunnerUtil.createTestReferences(TestRunnerUtil.java:39)\n\tat com.microsoft.java.test.runner.CustomizedJUnitCoreRunner.run(CustomizedJUnitCoreRunner.java:25)\n\tat com.microsoft.java.test.runner.JUnitLauncher.execute(JUnitLauncher.java:26)\n\tat com.microsoft.java.test.runner.JUnitLauncher.main(JUnitLauncher.java:15)\n\"}}-TestRunner>\n","timestamp":"2018-10-20T17:14:53.514Z"}_

mvn test
intellije test
eclipse test

all of them seems to handle junit test cases properly with pom.xml config. So not sure what's wrong in the vscode.

@jgheewala Did you still see this errors in the latest Test Runner extension?

Closing this issue since it's inactive for a long time.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

thegabriele97 picture thegabriele97  路  8Comments

gabloe picture gabloe  路  7Comments

spottedmahn picture spottedmahn  路  7Comments

sceee picture sceee  路  8Comments

ashoknailwal picture ashoknailwal  路  8Comments