Recibo este error en java en mi código de prueba junit. Miré hacia arriba en la red y dice que necesito agregar junit.jar en el classpath.
En Eclipse, lo agregué en la ruta de clase de las ventanas de Propiedades del proyecto, pero todavía obtengo un error de inicialización. Qué tengo que hacer..?
Este es el rastro completo del error:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
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)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 25 more
java
eclipse
junit
noclassdeffounderror
Chris Dennett
fuente
fuente
Respuestas:
fuente
Anexo: A nivel local, he creado una "Biblioteca de usuarios" y la he agregado a mis proyectos que
fuente
El mismo problema puede ocurrir si ha descargado JUnit jar del sitio web de JUnit, pero olvidó descargar el Hamcrest jar; ambos son obligatorios (las instrucciones dicen que descargue ambos, ¡pero salteé! ¡Ups!
fuente
Cuando lo utilice en Maven, actualice artifact junit: junit de, por ejemplo, 4.8.2 a 4.11.
fuente
NoClassDefFoundError: org/junit
...caused by ClassNotFoundException: org.junit.runners.model.InitializationError
para mí. Estaba usando Junit 4.8. Pasar a 4.11 funcionó.En Eclipse pude resolver el problema anterior siguiendo los pasos a continuación:
Haga clic con el botón derecho en el archivo de prueba que desea ejecutar, seleccione Ejecutar como -> Ejecutar configuraciones -> Seleccionar pestaña Classpath -> Seleccione las entradas de arranque -> Seleccione Avanzado -> Seleccione Agregar biblioteca -> Seleccione JUnit -> Siguiente -> Seleccione JUnit4 en el menú desplegable -> Finalizar
Luego seleccione Aplicar -> Ejecutar
fuente
La clase org / hamcrest / SelfDescribing no está en la ruta de clases en tiempo de ejecución.
fuente
Estos pasos funcionaron para mí cuando el error mostró que faltaba la clase Filter (como se informa en esta pregunta falsa duplicada : JUnit: NoClassDefFoundError: org / junit / runner / manipulation / Filter ):
Gracias a estas respuestas por darme la pista para esta solución: https://stackoverflow.com/a/34067333/5538923 y https://stackoverflow.com/a/39987979/5538923 ).
fuente
Pruebe los siguientes pasos:
Funcionó para mí.
fuente
Tuve el mismo problema, el problema estaba en el @ContextConfiguration en mis clases de prueba, también estaba cargando el contexto del servlet, simplemente cambio:
@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })
a:
@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })
y eso es. de esta manera solo estoy cargando todos los archivos con el patrón * -context.xml en mi ruta de prueba.
fuente
fuente
La razón de esto es que el jar "hamcrest-core" no está en classpath ya que no viene directamente con junit jar. Entonces, hay dos formas de resolver esto:
fuente
Añadiendo mis dos centavos a otras respuestas.
Compruebe si no ha creado por casualidad su clase de prueba en
src/main/java
lugar de lo habitualsrc/test/java
. El primero es el predeterminado en Eclipse cuando crea una nueva clase de prueba por cualquier motivo y puede pasarse por alto. Puede ser tan simple como eso.fuente
En mi caso, agregué mis bibliotecas a Modulepath en lugar de Classpath.
Solo funciona si JUnit se agrega correctamente a Classpath.
fuente
Este error también se produce si hay 2 versiones de hamcrest-library o hamcrest-core en el classpath.
En el archivo pom, puede excluir la versión adicional y funciona.
fuente
incluso Junit4.11.jar no tiene hamcrest-core.jar. Agregué explícitamente en la ruta de clase y el problema se resolvió.
fuente
Estaba siguiendo este video: https://www.youtube.com/watch?v=WHPPQGOyy_Y pero no pude ejecutar la prueba. Después de eso, eliminé todos los archivos descargados y agregué Junit usando el paso de la imagen.
fuente
Si tiene más de una versión de java, puede interferir con su programa.
Le sugiero que descargue JCreator.
Cuando lo haga, haga clic en configurar, opciones y perfiles JDK. Elimine las versiones antiguas de Java de la lista. Luego haga clic en el botón de reproducción. Su programa debería aparecer.
Si no es así, presione ctrl + alt + O y luego presione el botón de reproducción nuevamente.
fuente