java.lang.NoClassDefFoundError: org/hamcrest/SelfDescription

Tijdens het uitvoeren van de junit-test in eclipsekrijg ik deze Exception:

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

Ik heb junit.jarbibliotheekbestand toegevoegd.

Ik heb verschillende versies van junit.jar geprobeerd: 4.4, 4.8, enz.

Hoe los ik deze uitzondering op?


Antwoord 1, autoriteit 100%

Voeg hamcrest-all-X.X.jartoe aan je classpath.

De nieuwste versie van februari 2015 is 1.3:
http:// code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=


Antwoord 2, autoriteit 60%

Volgens de JUnit GitHub-teamwebsite (https://github. com/junit-team/junit/wiki/Download-and-Install), junit.jaren hamcrest-core.jarzijn beide nodig in het klassenpad bij gebruik van JUnit 4.11.

Hier is het Maven-afhankelijkheidsblok voor het opnemen van junit en hamcrest.

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.1.2</version>
    <scope>test</scope>
</dependency>
<!-- Needed by junit -->
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

Antwoord 3, autoriteit 22%

Een paar stappen die u moet volgen:

  1. Klik met de rechtermuisknop op het project.
  2. Kies Build Path en kies vervolgens Bibliotheken toevoegen in het menu.
  3. Kies JUnit en klik vervolgens op Volgende.
  4. Kies JUnit4 en vervolgens Voltooien.

Antwoord 4, autoriteit 17%

Werkt voor mij: IntelliJ IDEA 13.1.1, JUnit4, Java 6

Ik heb het bestand in het projectpad gewijzigd: [PROJECT_NAME].iml

Vervangen:

 <library>
    <CLASSES>
      <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

Door:

 <library name="JUnit4">
    <CLASSES>
      <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
      <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
      <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

Dus het uiteindelijke .iml-bestand is:

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module-library">
      <library name="JUnit4">
        <CLASSES>
          <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.11.jar!/" />
          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
          <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-library-1.3.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES />
      </library>
    </orderEntry>
  </component>
</module>

P.S.: sla het bestand op en laat IntelliJ Idea het niet opnieuw laden. Slechts één keer.


Antwoord 5, autoriteit 5%

Je hebt junit-dep.jar nodig omdat de junit.jar een kopie heeft van oude Hamcrest-klassen.


Antwoord 6, autoriteit 3%

Voor het geval er hier iemand is die netbeans gebruikt en hetzelfde probleem heeft, hoef je alleen maar

  • Klik met de rechtermuisknop op TestLibraries
  • Klik op Bibliotheek toevoegen
  • Selecteer JUnit en klik op bibliotheek toevoegen
  • Herhaal het proces, maar klik deze keer op Hamcrest en klik op bibliotheek toevoegen

Dit zou het probleem moeten oplossen


Antwoord 7, autoriteit 3%

Dit probleem wordt veroorzaakt door uw classpath miss hamcrest-core-1.3.jar. Om dit op te lossen, voegt u hamcrest-core-1.3.jar toe terwijl u junit-4.XX.jar toevoegt aan uw klassenpad.

In het begin kom ik dit probleem ook tegen, maar nadat ik de heb gelezen officiële siteen voeg hamcrest-core-1.3.jar toe aan classpath met de opdrachtregel, het werkt eindelijk naar behoren.

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

8, Autoriteit 3%

U moet de HamCrest-Core JAR aan het klassenpad toevoegen zoals hier wordt beschreven: https://github.com/junit-team/junit4/wiki/download-and-install


9, Autoriteit 2%

Zorg er altijd voor dat HamCrest altijd is voordat een andere testbibliotheken op het klassenpad is, omdat veel dergelijke bibliotheken Hamcrest-klassen omvatten en daarom kunnen conflicteren met de HAMCREST-versie die u gebruikt. Dit zal de meeste problemen oplossen van het type dat u beschrijft.


10, Autoriteit 2%

De eenvoudigste manier om het probleem op te lossen om mee te beginnen is het kopiëren van de nieuwste versie van HamCrest-Code.jar in uw klassenpad die het bestand is dat u andere .jar-bestanden opslaan die nodig is voor compilatie en uitvoering van uw aanvraag.

Dat zou bijvoorbeeld kunnen zijn.: C: / mier / lib


11

Het klinkt als een classpath-probleem, dus er zijn een paar verschillende manieren om eroverheen te gaan. Waar komt Org / Hamcret / Selfscribing vandaan? Is dat je klas of in een andere pot?

Probeer naar uw project Build Path en op het tabblad Bibliotheken, voeg een bibliotheek toe. U zou in staat moeten zijn om JUBIT aan uw project te kiezen. Dit is een beetje anders dan alleen het Junit Jar-bestand in je project hebben.

Controleer het klassenpad in uw run-configuratie voor de Junit-test. Je zou dit waarschijnlijk kunnen oplossen door toe te voegen om ervoor te zorgen dat je classpad die zelfschrijvingsklas daar kan zien. De optie Run in Eclipse heeft een andere reeks opties voor de Junit-opties.


12

Als dit probleem zich voordoen in een RCP-project, kan het zijn omdat JUBIT expliciet is geïmporteerd.

Controleer de editor voor uw plugin.xmlonder DependenciesTabblad, verwijder de org.junituit de geïmporteerde pakketten en voeg org.junitnaar de vereiste plug-ins.


13

Dit gebeurt wanneer u mier uitvoert via opdrachtregel. De impliciete gebruikersafhankelijkheden worden aan het einde in het klassenpad toegevoegd en hebben voorrang boven het project toegevoegd klassenpad. Run Ant -nouserlibvlag. De impliciete afhankelijkheden zouden worden uitgesloten van het klassenpad.


14

Er is een beter antwoord om dit probleem op te lossen.
Voeg afhankelijkheid toe

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

15

Ik had hetzelfde probleem, de oplossing is om in Build Path / Plugin de JAR Org.hamcrest.core_1xx toe te voegen, kunt u deze in Eclipse / plug-ins vinden.


16

Een paar stappen die u moet volgen:

  • Klik met de rechtermuisknop op het project.
  • Kies Build Path & AMP; Kies dan vanuit het menu Bibliotheken toevoegen.
  • Kies JUNIST en klik op Volgende.
  • Kies Junit4 en eindig.

Dit werkt voor mij …


17

“java.lang.securityException: class” org.hamcrest.matchers “s signer-informatie komt niet overeen met Signer Informatie van andere klassen in hetzelfde pakket”

Doe het:
Klik met de rechtermuisknop op uw pakket
Klik op Build Path – & GT; Configureer Build Path
Klik op het tabblad Bibliotheken
Verwijder Justit
Toepassen en sluiten
Klaar.


18

Probeer de JAR-bestanden handmatig toe te voegen of probeer met Force-update met de nieuwste HamCrest.Jar

Other episodes