Projekte in IDE untereinander sharen / Probleme beim Build

internet

Top Contributor
Hallo,

ich versuche mich gerade daran, dass ich Projekte untereinander share.

D.h. ich habe bspw. 5 Eclipse Projekte.
In allen Projekten hatte ich vor kurzem immer jeweils einige gleiche Klassen verwendet.
Diese habe ich nun alle ausgelagert in ein Projekt.
Dieses Projekt habe ich nun zum Testen bei einem der bisherigen Projekte hinzugefügt:

1669820763318.png

Das funktioniert auch soweit, und ich kann die Klassen in meinem bisherigen Projekt verwendet.
Nun habe ich aber Probleme beim Build (.war - file) des Projekts.

Hier bekomme ich nun eine java.lang.NoClassDefFoundError Exception beim Bauen (Maven) des Webprojekts (.war - File).
Habe ich etwas vergessen?
 

KonradN

Super-Moderator
Mitarbeiter
Wenn Du mit Maven arbeitest, dann musst Du all diese Dinge auch in Maven verwalten! Also vergiss die ganzen Eclipse Einstellungen!
 

internet

Top Contributor
hm, das heißt dann genau?
In meiner pom.xml füge ich ja die ganzen Dependency so hinzu:
Java:
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>font-awesome</artifactId>
    <version>4.7.0</version>
</dependency>

aber wie mache ich das dann mit einem lokalen Eclipse Projekt?
 

Oneixee5

Top Contributor
Eclipse übernimmt den den Classpath von Maven automatisch, wenn das Projekt die "Maven Nature" hat. Wenn dein Sub-Projekt auch ein Maven-Projekt ist, dann musst du es in die pom.xml eintragen.
 

internet

Top Contributor
hm...
ja, das ist auch ein Maven Projekt...

Das habe ich nun gebaut (.jar) und ich sehe, dass es in meinem Maven Pfad auch ist... "myUser/ .m2

Nun habe ich es in meiner .pom.xml hinzugefügt:
Java:
<dependency>
  <groupId>com.mycompany</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

Die Klassen werden im Compiler auch geladen. Aber beim Bauen des .war files erhalte ich weiterhin die Fehlermeldung:
java.lang.NoClassDefFoundError

Im Maven Tree von diesem Projekt, sehe ich nun aber nicht die .jar - Datei, sondern das Subprojekt... Stimmt das so?
1669824111320.png

Was mache ich falsch?
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Als erstes noch einmal: Mach rückgängig, was Du in Eclipse eingestellt hast ... Maven Projekte werden rein mit Maven gebaut!

Wenn Du Maven nutzt, dann zeig die pom.xml von Deinen Projekten! Das sind die eigentlichen Einstellungen. Maven bietet den Vorteil, dass man ganz einfach die ganze Konfiguration eines Projektes zeigen kann - nutze diese Möglichkeit!

Und lass die Screenshots von Eclipse! Statt dessen zeig die Ausgabe, die ein "mvn clean package" zeigt. Ggf. von beiden Projekten. Das ist Vorteil Nr. 2: Man bekommt wirklich die Fehlermeldung und keine Interpretationen!
 

internet

Top Contributor
Danke.
1) Habe ich bereits rückgängig gemacht

Hier die pom.xml von dem Share Projekt:
Java:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompany</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>Test classes</name>
    <description>Common classes</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <resteasy.version>4.5.8.Final</resteasy.version>
        <wildfly-arquillian.version>3.0.1.Final</wildfly-arquillian.version>
        <maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
        <maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version>
        <wildfly.version>21.0.0.Final</wildfly.version>
    </properties>



    <repositories>

        <repository>
            <id>central</id>
            <name>Maven Central</name>
            <url>https://repo1.maven.org/maven2</url>
        </repository>

    </repositories>


    <dependencies>

        <!--Etliche dependencies, lasse jetzt der Übersichtlichkeit diese weg...-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.2</version>
        </dependency>

    </dependencies>


    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>


            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

Wenn ich mit Eclipse "Maven Install" mache, bekomme ich keine Fehler, hier die Ausgabe:

Code:
[INFO] Building MyCompany Common classes 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The artifact bouncycastle:bctsp-jdk14:jar:138 has been relocated to org.bouncycastle:bctsp-jdk14:jar:1.38
[WARNING] The POM for org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 87 source files to /Applications/Software/eclipse-workspace/test/target/classes
[WARNING] /Applications/Software/eclipse-workspace/test/src/main/java/com/mycompany/condition/model/Condition.java: Some input files use unchecked or unsafe operations.
[WARNING] /Applications/Software/eclipse-workspace/test/src/main/java/com/mycompany/condition/model/Condition.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ test ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ test ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ test ---
[INFO] Building jar: /Applications/Software/eclipse-workspace/test/target/test.jar
[INFO] META-INF/maven/com.mycompany/test/pom.xml already added, skipping
[INFO] META-INF/maven/com.mycompany/test/pom.properties already added, skipping
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ test ---
[INFO] Installing /Applications/Software/eclipse-workspace/test/target/test.jar to /Users/RIDER/.m2/repository/com/mycompany/test/1.0-SNAPSHOT/test-1.0-SNAPSHOT.jar
[INFO] Installing /Applications/Software/eclipse-workspace/test/pom.xml to /Users/RIDER/.m2/repository/com/mycompany/test/1.0-SNAPSHOT/test-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  19.727 s
[INFO] Finished at: 2022-11-30T17:18:41+01:00
[INFO] ------------------------------------------------------------------------

Hier die pom.xml von meinem Projekt, in dem ich das Subprojekt einbinden möchte:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompany</groupId>
    <artifactId>primaryproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Ticketsystem</name>
    <description>Ticketsystem</description>

    <!-- <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version> <maven.compiler.target>${java.version}</maven.compiler.target>
        <maven.compiler.source>${java.version}</maven.compiler.source> </properties> -->

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.build.directory>/Applications/Software</project.build.directory>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <resteasy.version>4.5.8.Final</resteasy.version>
        <wildfly-arquillian.version>3.0.1.Final</wildfly-arquillian.version>
        <maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
        <maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version>
        <wildfly.version>21.0.0.Final</wildfly.version>
        <m2e.apt.activation>jdt_apt</m2e.apt.activation>
        <org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
    </properties>


    <repositories>

        <repository>
            <id>central</id>
            <name>Maven Central</name>
            <url>https://repo1.maven.org/maven2</url>
        </repository>

    </repositories>


    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>1.6.0.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <dependencies>

        <!-- einige andere dependencies... -->
        
        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>test</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>


    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>

            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.0.1.Final</version>
            </plugin>

            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${org.mapstruct.version}</version>
                        </path>
                    </annotationProcessorPaths>
                    <webResources>
                        <resource>
                            <directory>${basedir}/src/main/webapp</directory>
                            <filtering>true</filtering>
                            <includes>
                                <include>*.css</include>
                                <include>*.html</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>


        </plugins>
    </build>

</project>

Auch hier bekomme ich beim Build mit Maven Install kein Fehler... sondern eben, BUILD SUCCESS und das .war File wird erstellt...
Wenn ich das .war File dann aber auf den Wildfly deploye, bekomme ich wie gesagt die Fehlermeldung:

Caused by: java.lang.NoClassDefFoundError: Failed to link class....
 

LimDul

Top Contributor
Welche Klasse findet er denn genau nicht? Und das jar mit Dependencies zu packen sieht falsch aus.

Also das hier:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Das macht man nur, wenn ein jar bauen will, das man eigenständig ausführen will. Nicht wenn man das woanders einbinden will. Die Dependencies werden ja über maven für das war-projekt selbst gezogen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
O Ideen für kleinere Projekte um Java zu lernen Java Basics - Anfänger-Themen 1
MiMa Klassen in Projekte wiederverwenden ?? (Netbeans IDE) Java Basics - Anfänger-Themen 8
T Erste Schritte Darstellung der Java-Projekte in Eclipse Java Basics - Anfänger-Themen 2
snipesss Eclipse Neon findet meine Projekte nicht? Java Basics - Anfänger-Themen 1
A Erste Schritte Vieschiedene Java versionen für verschiedne Programme/Projekte Java Basics - Anfänger-Themen 3
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
L Beispiel Projekte Java Basics - Anfänger-Themen 3
A geeignete Java-Projekte für Schüler (Einsteiger) Java Basics - Anfänger-Themen 28
G Projekte importieren und andere Fragen Java Basics - Anfänger-Themen 3
D Javadoc für Packages oder ganze Projekte Java Basics - Anfänger-Themen 5
A Projekte Java Basics - Anfänger-Themen 7
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
D Java-Projekte importieren Java Basics - Anfänger-Themen 6
E Erste Schritte Eclipse kompiliert alle Projekte im Workspace Java Basics - Anfänger-Themen 10
X Klassen Klassen in Projekte einbinden mit Eclipse Java Basics - Anfänger-Themen 6
K Gelöschte Projekte nicht neu anlegbar Java Basics - Anfänger-Themen 3
M tomcat Projekte und geschützte Dateien Java Basics - Anfänger-Themen 9
S Alle Projekte fehlen bei Eclipse ??? Java Basics - Anfänger-Themen 3
H Große Projekte mit Java - Ausführbare Datei Java Basics - Anfänger-Themen 2
S Irgendwie kann ich meine Eclipse Projekte nicht mehr veraendern..? Java Basics - Anfänger-Themen 5
G Referenzierte Projekte: java.lang.NoClassDefFoundError Java Basics - Anfänger-Themen 2
G Projekte referenzieren Java Basics - Anfänger-Themen 5
C Projekte in Jar-Datei einbinden Java Basics - Anfänger-Themen 2
M wie kann ich meine Projekte auf einen stick speichern? Java Basics - Anfänger-Themen 6
G 2 Projekte vereinen Java Basics - Anfänger-Themen 2
J JBuilder-Projekte als exe? Java Basics - Anfänger-Themen 6
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
X Arrays untereinander schreiben Java Basics - Anfänger-Themen 4
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Panels untereinander anordnen Java Basics - Anfänger-Themen 3
A Erste Schritte Daten untereinander anordnen Java Basics - Anfänger-Themen 9
N txt daten untereinander speichern Java Basics - Anfänger-Themen 2
SexyPenny90 JLabel Text und Icon untereinander verwenden Java Basics - Anfänger-Themen 3
E Array untereinander auf Duplikate prüfen Java Basics - Anfänger-Themen 8
F Input/Output Textzeilen in txt-Datei nebeneinander sollen untereinander Java Basics - Anfänger-Themen 5
S Doppelpunkte müssen untereinander stehen... Java Basics - Anfänger-Themen 4
_deleted Mehrere Panels untereinander im JScrollPane Java Basics - Anfänger-Themen 4
G JLabel - Icon und Text untereinander anordnen? Java Basics - Anfänger-Themen 2
J Ausgabe mit BufferedWriter exakt untereinander anordnen Java Basics - Anfänger-Themen 10
J GUI-Elemente untereinander platzieren Java Basics - Anfänger-Themen 2
P Anordnung Textfelder untereinander? Java Basics - Anfänger-Themen 16
A Mehrere if Bedingungen untereinander? Java Basics - Anfänger-Themen 4
M Zugriff von Klassen untereinander ohne varname=new classname Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben