java.lang.NoClassDefFoundError: org / hamcrest / SelfDescribing

Mientras junit prueba junit en eclipse , recibo esta Exception :

 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 

He agregado el archivo de la biblioteca junit.jar .

He probado diferentes versiones de junit.jar: 4.4 , 4.8 , etc.

¿Cómo soluciono esta excepción?

Agrega hamcrest-all-XXjar a tu classpath .

La última versión de febrero de 2015 es 1.3: http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=

De acuerdo con el sitio web del equipo JUnit GitHub ( https://github.com/junit-team/junit/wiki/Download-and-Install ), junit.jar y hamcrest-core.jar son necesarios en el classpath cuando se usa JUnit 4.11 .

Aquí está el bloque de dependencia Maven para incluir Junit y Hamcrest.

  junit junit 4.1.2 test    org.hamcrest hamcrest-all 1.3 test  

Funciona para mí: IntelliJ IDEA 13.1.1, JUnit4, Java 6

Cambié el archivo en la ruta del proyecto: [PROJECT_NAME] .iml

Reemplazado:

         

Por:

           

Entonces el archivo .iml final es:

 < ?xml version="1.0" encoding="UTF-8"?>                       

PD: guarda el archivo y no lo dejes a IntelliJ Idea, vuelve a cargarlo. Sólo una vez.

Algunos pasos que debes seguir:

  1. Haga clic derecho en el proyecto.
  2. Elija Build Path Luego, en su menú, elija Add Libraries.
  3. Elige JUnit y luego haz clic en Siguiente.
  4. Elige JUnit4 y luego Termina.

Necesitas junit-dep.jar porque junit.jar tiene una copia de las antiguas clases de Hamcrest.

Como regla general, siempre asegúrese de que hamcrest esté antes de otras bibliotecas de prueba en el classpath, ya que muchas de estas bibliotecas incluyen clases de hamcrest y, por lo tanto, pueden entrar en conflicto con la versión de hamcrest que está utilizando. Esto resolverá la mayoría de los problemas del tipo que describes.

Este problema se debe a tu classpath miss hamcrest-core-1.3.jar. Para resolver esto, agregue hamcrest-core-1.3.jar a medida que agrega junit-4.XX.jar en su classpath.

Al principio, me encuentro con este problema también, pero después de consultar el sitio oficial y agregar hamcrest-core-1.3.jar en classpath con línea de comandos, funciona correctamente finalmente.

 javac -d ../../../../bin/ -cp ~/libs/junit-4.12.jar:/home/limxtop/projects/algorithms/bin MaxHeapTest.java java -cp ../../../../bin/:/home/limxtop/libs/junit-4.12.jar:/home/limxtop/libs/hamcrest-core-1.3.jar org.junit.runner.JUnitCore com.limxtop.heap.MaxHeapTest 

Suena como un problema de classpath, por lo que hay algunas formas diferentes de hacerlo. ¿De dónde viene org / hamcret / SelfDescribing? ¿Es esa tu clase o en un flask diferente?

Intente ir a la ruta de comstackción de su proyecto y en la pestaña Bibliotecas, agregue una biblioteca. Debería poder elegir JUnit para su proyecto. Esto es un poco diferente que solo tener el archivo jar JUnit en su proyecto.

En su configuración de ejecución para la prueba JUnit, verifique el Classpath. Probablemente puedas arreglar esto agregando asegurándote de que tu Classpath pueda ver esa clase SelfDescribing allí. La opción Ejecutar en Eclipse tiene un conjunto diferente de opciones para las opciones JUnit.

Si surge este problema en un proyecto de RCP, puede ser porque JUnit se ha importado explícitamente.

Compruebe el editor de su plugin.xml en la pestaña Dependencies , elimine org.junit de los paquetes importados y agregue org.junit a los complementos necesarios.

El problema es cuando configura eclipse para apuntar a JRE en lugar de JDK . JRE tiene junit4.jar en la carpeta lib/ext , pero no en hamcrest.jar 🙂 Por lo tanto, la solución es verificar los JRE instalados en Eclipse, eliminar el existente y crear uno nuevo que apunte a su JDK .

En caso de que haya alguien aquí que use netbeans y tenga el mismo problema, todo lo que tienes que hacer es

  • Haga clic derecho en TestLibraries
  • Haga clic en Agregar biblioteca
  • Seleccione JUnit y haga clic en agregar biblioteca
  • Repita el proceso, pero esta vez haga clic en Hamcrest y haga clic en Agregar biblioteca

esto deberia resolver el problema

La forma más sencilla de resolver el problema es copiar la última versión de hamcrest-code.jar en CLASSPATH, que es el archivo donde almacena otros archivos .jar necesarios para comstackr y ejecutar su aplicación.

eso podría ser, por ejemplo: C: / ant / lib

Esto sucede cuando ejecuta Ant a través de la línea de comando. Las dependencias implícitas del usuario se agregan en el classpath al final y tienen prioridad sobre el classpath agregado al proyecto. Ejecutar Ant con la bandera -nouserlib . Las dependencias implícitas se excluirían de la ruta de clase.

Debe agregar el JAR de hamcrest-core al classpath como se describe aquí: https://github.com/junit-team/junit4/wiki/Download-and-Install

Tuve el mismo problema, la solución es agregar en comstackción / plugin el jar org.hamcrest.core_1xx, puedes encontrarlo en eclipse / plugins.