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

dermoritz

Bekanntes Mitglied
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?)
 
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:

Code:
      <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:

Code:
    <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
 
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:
Code:
<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:

Code:
<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<attachClasses>true</attachClasses>
					<classesClassifier>classes</classesClassifier>
				</configuration>
			</plugin>
 
Hi,

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 ?..)...

also mein it projekt hat folgende Abhängigkeit:
Code:
<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>HauptModul</artifactId>
			<version>${project.version}</version>
			<classifier>classes</classifier>
			<scope>test</scope>
		</dependency>
Ich gehe mal davon aus, dass Du mit "HauptModul" das "web-module" (packaging: war) meinst ?

(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...

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

Code:
<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<attachClasses>true</attachClasses>
					<classesClassifier>classes</classesClassifier>
				</configuration>
			</plugin>
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
 
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"?)
 
Hi,
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...

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
 
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)
 
Hi,

Danke, läuft nun 🙂
Sehr gut zu hören...

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
 

Neue Themen


Zurück
Oben