# [Maven] noclassdeffounderror in eclipse (junittest) - mvn integration-test funktioniert!)



## dermoritz (4. Jan 2012)

Ich hatte dieses Problem schon öfter, konnte es aber immer mit einem "clean package" beheben: Eclipse gibt beim Ausführen eines JUnitTests "NoClassDefFoundError" aus wobei alles wunderbar aus der Konsole läuft.

Im jetzigen Fall handelt es sich um ein Integrationstest-Modul, es hat also nix src/main/java. Es ist direkt abhängig (scope test) von einem weiteren Modul (dem Modul mit der eigentlichen Webanwendung).
Der NoClassDefFoundError bezieht sich auf eine Klasse bzw. ein Interface in diesem "Hauptmodul".

Wie gesagt clean hat nicht geholfen und die Sachen von hier: Eclipse - java.lang.ClassNotFoundException - Stack Overflow auch nicht.

hat jemand noch ne idee? oder kannmir jemand zumindest sagen wo ich nachschauen sollte (welche "classes" müssen in welchen Ordnern liegen damit Eclipse sie findet?)


----------



## kama (4. Jan 2012)

Hi,

das bedeutet Du nutzt Klassen(Interfaces o.ä.) aus dem Web-Module...(war?) aus dem src/main/java Ordner ...

Das Problem hatte ich auch schon... ;-)

Im Web-Module (war) hilft ein Eintrag:


```
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
		<configuration>
                   <!-- Das erzeugt ein separates Paket -->
                  <attachClasses>true</attachClasses>
 		</configuration>
      </plugin>
```
Das erzeugt ein separates jar file was nur den Kram aus src/main/java enthält...
und im Integrationstest Module musst Du:


```
<dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>web-module</artifactId>
      <version>${project.version}</version>
      <classifier>classes</classifier>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
```
hinzufügen....

Damit sollte das Problem gelöst sein...

Gruß
Karl Heinz Marbaise


----------



## dermoritz (4. Jan 2012)

das hab ich schone gemacht - nur so kann man wohl überhaupt eine Abhängigkeit zu einer war-Datei herstellen?! (ohne das läuft es auch nicht in der Konsole?!)

also mein it projekt hat folgende Abhängigkeit:

```
<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>HauptModul</artifactId>
			<version>${project.version}</version>
			<classifier>classes</classifier>
			<scope>test</scope>
		</dependency>
```
(nur das Detail <type>jar</type> fehlt - daran wirds nicht liegen oder?)
im Hauptmodul ist das war-plugin folgendermaßen konfiguriert:


```
<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<attachClasses>true</attachClasses>
					<classesClassifier>classes</classesClassifier>
				</configuration>
			</plugin>
```


----------



## kama (4. Jan 2012)

Hi,



dermoritz hat gesagt.:


> das hab ich schone gemacht - nur so kann man wohl überhaupt eine Abhängigkeit zu einer war-Datei herstellen?! (ohne das läuft es auch nicht in der Konsole?!)


Du machst keine Abhängigkeit zur der WAR-Datei sondern zu der Classes Datei (jar) die eben nur die compilierten Klassen enthält (mit resourcen ?..)...



dermoritz hat gesagt.:


> also mein it projekt hat folgende Abhängigkeit:
> 
> ```
> <dependency>
> ...


Ich gehe mal davon aus, dass Du mit "HauptModul" das "web-module" (packaging: war) meinst ?



dermoritz hat gesagt.:


> (nur das Detail <type>jar</type> fehlt - daran wirds nicht liegen oder?)


Sollte nicht, da der default hierbei "jar" ist...aber ich würde das trotzdem hinschreiben...



dermoritz hat gesagt.:


> im Hauptmodul ist das war-plugin folgendermaßen konfiguriert:
> 
> 
> ```
> ...


Bis auf den "classesClassifier" (würde ich weg lassen)...alles das gleiche...


Ich hatte Dich da wohl ein wenig misverstanden...Du hattest das Problem im Eclipse und nicht mit Maven...mein Fehler....

Das Problem ist ein Bug in m2e Eclipse (https://bugs.eclipse.org/bugs/show_bug.cgi?id=365419)...

Da hilft dann nur dass Du eine Run-Konfiguration für den Test machst und die Abhängigkeit eben "manuell" hinzu fügst...(zum WAR-Module)...

Gruß
Karl Heinz Marbaise


----------



## dermoritz (4. Jan 2012)

Danke für die Infos (für mich verdichten sich die Hinweise, dass Eclipse und Maven kein Traumpaar sind :-|).

Da ich lange aus dem Geschäft mit dem mnuellen hinzufügen von Abhängigkeiten raus bin:
Ich schätze ich muss in der Run configuration unter classpath->user entires etwas hinzufügen? Nur was (eine jar, ein projekt oder "advanced"?)


----------



## kama (4. Jan 2012)

Hi,


dermoritz hat gesagt.:


> Danke für die Infos (für mich verdichten sich die Hinweise, dass Eclipse und Maven kein Traumpaar sind :-|).


Sehe ich auch so...andere können das besser...Ich hoffe auch dass das noch besser wird...



dermoritz hat gesagt.:


> Da ich lange aus dem Geschäft mit dem mnuellen hinzufügen von Abhängigkeiten raus bin:
> Ich schätze ich muss in der Run configuration unter classpath->user entires etwas hinzufügen? Nur was (eine jar, ein projekt oder "advanced"?)


Ein Projekt eben das web-module...also unter user entries das Projekt web-module hinzu fügen..Dann klappst auch mit dem Nachbarn ;-)..

Gruß
Karl Heinz Marbaise


----------



## dermoritz (5. Jan 2012)

Danke, läuft nun 

was meinst mit "andere können das besser" - NetBeans? (Da hatte ich zumindest das Gefühl das die Mavenunterstützung besser ist - nur hab ich da noch nicht das Analogon zu "Run/Debug As Webapplication" gefunden)


----------



## kama (5. Jan 2012)

Hi,



dermoritz hat gesagt.:


> Danke, läuft nun


Sehr gut zu hören...



dermoritz hat gesagt.:


> was meinst mit "andere können das besser" - NetBeans? (Da hatte ich zumindest das Gefühl das die Mavenunterstützung besser ist - nur hab ich da noch nicht das Analogon zu "Run/Debug As Webapplication" gefunden)


z. B. Netbeans...Kollege hat mir gesagt dass es da auch das Analoge zu "Run/Debug as.." gibt....ich muss mir das Teil nochmal selbst antun...

Gruß
Karl Heinz Marbaise


----------



## dermoritz (15. Mrz 2012)

Ich hab nun das selbe Problem in Eclipse 3.7. Aber da funktioniert es nicht. Hat wer für Indigo auch eine Lösung?


----------



## kama (15. Mrz 2012)

Hi,

die Lösung die ich gepostet hatte war bereits mit Bezug zu Indigo ...

Gruß
Karl Heinz Marbaise


----------

