2010-11-19 17 views
58

Estoy obteniendo este error en java en mi código de prueba junit. Miré en la red y dice que necesito agregar el junit.jar en el classpath.java.lang.NoClassDefFoundError en junit

En Eclipse lo he agregado en el classpath de las ventanas Project Properties, pero sigo recibiendo un error de inicialización. Que debería hacer..?

Ésta es la traza completa 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 
+1

Qué clase de falta de acuerdo el error? – BalusC

Respuesta

88
  1. clic derecho sobre el proyecto en el Explorador de paquetes> haga clic en Propiedades
  2. ir a Java Build Path> Bibliotecas pestaña
  3. clic en 'Añadir Botón 'Biblioteca
  4. seleccione JUnit
  5. haga clic en Siguiente.

Debería poder manejarlo desde allí.

+0

Hacer esto agrega JUNIT en la biblioteca pero ahora dice que junit.org no se puede resolver –

+5

Simplemente comprueba que tienes la biblioteca de Hamcrest también en la ruta de clase. La versión actual de JUnit 4 debe ser totalmente incluyente, pero a veces las personas dividen los paquetes. –

+1

Muchas gracias .... Ahora está resuelto ... Voy a marcar esto como la respuesta ... –

2

La clase org/hamcrest/SelfDescribing no está en el classpath en tiempo de ejecución.

-1

Si tiene más de una versión de java, puede interferir con su programa.

Sugiero que descargue JCreator.

Cuando lo haga, haga clic en configurar, opciones y perfiles JDK. Elimine las versiones anteriores de Java de la lista. Luego haz clic en el botón de reproducción. Tu programa debería aparecer

Si no lo hace, presione ctrl + alt + O y luego presione el botón de reproducción nuevamente.

1

Probar los pasos siguientes:

  1. Ir a la configuración de ejecución de su proyecto. En la pestaña Classpath, agregue la biblioteca JUnit.
  2. Vuelva a intentar los mismos pasos.

que trabajó para mí.

1

que tenían el mismo problema, el problema estaba en la @ContextConfiguration en las clases de prueba mí, yo estaba cargando el contexto servlet también acabo de cambiar:

@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" }) 

a:

@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" }) 

y Eso es. de esta forma solo estoy cargando todos los archivos con el patrón * -context.xml en la ruta de prueba.

11

El mismo problema puede ocurrir si se ha descargado el tarro JUnit desde el sitio web de JUnit, pero olvidado para descargar el frasco Hamcrest - (! Dicen las instrucciones para descargar los dos, pero me salté por delante Vaya) ambos son necesarios

1
  1. Asegúrese de que la variable de entorno JUNIT_HOME esté configurada en c: \ JUNIT.
  2. luego En configuración de ejecución> seleccione ruta de clase> agregar jar externos junit-4.11.jar
1

El motivo de esto es que el jarrón "hamcrest-core" no está en classpath, ya que no viene directamente con junit jar. Así que hay dos maneras de resolver esto:

  1. Proyecto selecto -> BuildPath -> añadir bibliotecas y seleccione JUnit (Contiene tanto junit & hamcrest-core)
  2. descarga hamcrest núcleos de recompra experto y añade este a su classpath.
0

Este error también aparece si hay 2 versiones de hamcrest-library o hamcrest-core en la classpath.

En el archivo pom, puede excluir la versión extra y funciona.

8

Al usar en Maven, actualice artefacto junit: junit de, p. 4.8.2 a 4.11.

+0

Esto arregló un 'NoClassDefFoundError: org/junit' ...' causado por ClassNotFoundException: org.junit.runners.model.InitializationError' para mí. Estaba usando Junit 4.8. Pasar a 4.11 funcionó. –

0

incluso Junit4.11.jar no tiene el hamcrest-core.jar. Agregué explícitamente en el classpath y el problema fue resuelto.

13
  1. Eclipse -> menú de Inicio -> Ejecutar -> Ejecutar configuraciones
  2. Eliminar todas las ocurrencias de la prueba. Su prueba puede aparecer como YourTest.Method_1(). Eliminar eso también.
  3. Vuelva a ejecutar. Deje que Eclipse construya una nueva configuración.

Adición: Localmente he creado un "usuario de la biblioteca" y se añade a mis proyectos que tiene

hamcrest-core-1.3.jar

junit-4.12.jar

Cuestiones relacionadas