Basisprojekt Checkliste
Fehlerbehebung: IntelliJ, Maven und Serverstart
Diese Checkliste hilft bei Problemen mit dem Import des Basisprojekts, fehlenden Maven-Abhängigkeiten, generierten Klassen und dem Start des Spring-Boot-Servers. Arbeite die Punkte der Reihe nach durch. Halte die erste aussagekräftige Fehlermeldung fest.
A. Java und Maven überprüfen
☐ A1 – Java-Version im Terminal prüfen. In einem Terminal im Projektverzeichnis ausführen:
mvn -version
Das Projekt benötigt ein geeignetes JDK (für das Basisprojekt: Java 21). Wichtig: `mvn -version` zeigt die Java-Laufzeit, mit der Maven gestartet wird. Diese kann sich von `java -version` unterscheiden.
☐ A2 – Project SDK kontrollieren. In IntelliJ: File → Project Structure → Project → SDK. Ein JDK 21 auswählen; nicht nur eine JRE.
☐ A3 – Module SDK kontrollieren. Unter Project Structure → Modules sollten die Module das Project SDK bzw. ein passendes JDK verwenden.
☐ A4 – Maven Runner JRE prüfen. Unter Settings → Build, Execution, Deployment → Build Tools → Maven → Runner die JRE kontrollieren. Möglichst dasselbe JDK wie für das Projekt wählen.
☐ A5 – Maven Importer JDK prüfen. Unter Settings → Build Tools → Maven → Importing prüfen, mit welchem JDK der Maven-Import durchgeführt wird. Die Menüführung kann je nach IntelliJ-Version abweichen.
B. Maven-Projekt korrekt importieren
☐ B1 – Richtiges Verzeichnis geöffnet? In IntelliJ das Verzeichnis mit der übergeordneten `pom.xml` öffnen, nicht nur das `server`-Unterverzeichnis.
☐ B2 – Maven-Projekt erkannt? Das Maven-Toolfenster muss das Root-Projekt zeigen. Falls nicht: Rechtsklick auf die Root-`pom.xml` → Add as Maven Project bzw. Load Maven Project.
☐ B3 – Alle Module eingebunden? Im Maven-Toolfenster prüfen, ob `server`, `client` und die gemeinsam genutzten Module entsprechend der Root-`pom.xml` angezeigt werden.
☐ B4 – Maven-Projekt neu laden. Im Maven-Toolfenster Reload All Maven Projects auswählen. Anschließend warten, bis der Import abgeschlossen ist, und das Build- bzw. Problems-Fenster ansehen.
☐ B5 – Maven-Offlinemodus deaktivieren. Prüfen, dass Work Offline im Maven-Toolfenster nicht aktiviert ist.
☐ B6 – Maven-Einstellungen vergleichen. Unter Settings → Build Tools → Maven das Maven Home, eine eventuell gesetzte `settings.xml` und den Pfad zum lokalen Repository prüfen. IntelliJ und das Terminal sollten möglichst dieselbe Maven-Konfiguration verwenden. Bei Proxy- oder Repository-Problemen auch VPN/Netzwerk kontrollieren.
C. Maven-Build und generierte Klassen
☐ C1 – Vollständigen Build aus dem Projekt-Root ausführen. Im Terminal im Verzeichnis der übergeordneten `pom.xml`:
`-U` überprüft aktualisierte Snapshots; `clean` entfernt Build-Ergebnisse; `install` installiert erfolgreich gebaute Artefakte lokal. `-DskipTests` überspringt die Ausführung der Tests, nicht zwingend ihre Kompilierung. Wenn der Build fehlschlägt: zuerst dessen erste relevante Fehlermeldung untersuchen.
☐ C2 – OpenAPI-Codegenerierung prüfen. Unter den betroffenen Modulen im Verzeichnis `target/generated-sources` nachsehen, ob die erwarteten API-Klassen und DTOs generiert wurden. Wenn nicht, auf Fehler in der Maven-Plugin-Ausführung achten.
☐ C3 – Generierte Quellen in IntelliJ einbinden. Falls die Dateien vorhanden sind, IntelliJ sie aber nicht findet: Maven-Projekte neu laden und in Project Structure → Modules → Sources prüfen, ob die Verzeichnisse als Generated Sources Roots erkannt werden.
☐ C4 – Lombok prüfen. Sicherstellen, dass die Lombok-Unterstützung in IntelliJ aktiviert ist und Annotation Processing korrekt eingerichtet ist. Typisches Symptom: IntelliJ findet generierte Getter, Setter oder Konstruktoren nicht.
☐ C5 – MapStruct prüfen. Wenn Mapper-Implementierungen fehlen: die Annotation-Processor-Konfiguration kontrollieren und nach generierten Implementierungen (häufig in `target/generated-sources/annotations`) suchen. Danach Maven neu importieren.
D. IntelliJ-Startkonfiguration des Servers
☐ D1 – Richtige Startklasse wählen. Die `ServerApp` im Server-Modul starten, nicht eine Client- oder andere Main-Klasse.
☐ D2 – Run Configuration kontrollieren. Unter Run → Edit Configurations die Konfiguration für `ServerApp` öffnen: passendes JDK/JRE auswählen und den Klassenpfad des Server-Moduls verwenden (je nach IntelliJ-Version Use classpath of module).
☐ D3 – Run Configuration neu erzeugen. Falls eine alte oder fehlerhafte Konfiguration existiert, diese entfernen und die `main`-Methode von `ServerApp` direkt über den grünen Startpfeil ausführen.
☐ D4 – Working Directory prüfen. Wenn die Anwendung Dateien über relative Pfade lädt, muss das Arbeitsverzeichnis zur Projektkonfiguration passen. Den Pfad nicht auf Verdacht ändern, sondern bei File not found-Meldungen prüfen.
☐ D5 – Aktives Spring-Profil prüfen. Nur wenn die Anleitung beziehungsweise der gewünschte Entwicklungsmodus es verlangt, das Profil `dev` über `SPRING_PROFILES_ACTIVE=dev` oder ein entsprechendes VM-/Programmargument aktivieren. Das Entwicklungsprofil ist nicht automatisch nötig, damit Spring Boot überhaupt startet.
E. Fehler beim Spring-Boot-Start
☐ E1 – Port bereits belegt? Bei `Port ... was already in use` prüfen, ob ein anderer Serverprozess läuft, und diesen beenden oder den Port gezielt ändern.
☐ E2 – ApplicationContext-Fehler? Bei `APPLICATION FAILED TO START` die erste relevante `Caused by:`-Meldung ermitteln. Die letzte Zeile ist häufig nur eine Folge des eigentlichen Fehlers.
☐ E3 – Konfiguration oder externe Dienste fehlen? Bei `DataSource`-, Netzwerk- oder Konfigurationsfehlern kontrollieren, ob benötigte lokale Ressourcen, Umgebungsvariablen und Konfigurationsdateien vorhanden sind.
☐ E4 – Fehlende Spring-Beans? Bei `NoSuchBeanDefinitionException` oder `UnsatisfiedDependencyException` prüfen, ob Komponenten/Mapper generiert wurden, durch Component Scanning erfasst werden und die erforderlichen Abhängigkeiten verfügbar sind.
☐ E5 – Erfolgreichen Serverstart verifizieren. In der Run-Konsole auf die erfolgreiche Spring-Boot-Startmeldung achten. Der Prozess muss weiterlaufen; bei Bedarf den vorgesehenen HTTP-Endpunkt im Browser oder mit einem API-Client testen.
Typische Fehlermeldungen
| Meldung / Symptom | Mögliche Ursache | Erster Prüfschritt |
|---|---|---|
| `Cannot resolve symbol` | Maven-Import oder generierte Quellen fehlen | B2–B4 und C2–C3 |
| `invalid target release: 21` | Maven verwendet ein zu altes JDK | A1, A4 |
| `Could not resolve dependencies` | Repository, Netzwerk, Offline-Modus, Koordinaten | B5–B6, C1 |
| `package ... does not exist` | Klassen nicht generiert oder Abhängigkeiten fehlen | C1–C3 |
| Fehlende Getter/Setter | Lombok / Annotation Processing | C4 |
| Fehlende Mapper-Implementierung | MapStruct / Annotation Processing | C5 |
| `No qualifying bean of type ...` | Bean fehlt oder wird nicht gefunden | E4 |
| `Port ... was already in use` | Port belegt | E1 |
| `Could not find or load main class` | Run Configuration / Klassenpfad falsch | D1–D3 |
| `UnsupportedClassVersionError` | Laufzeit-Java zu alt | A1–A5, D2 |
Wenn das Problem weiterhin besteht
Bitte sende den Tutorinnen und Tutoren bzw. der Lehrveranstaltungsbetreuung folgende Informationen:
- Betriebssystem und IntelliJ-Version.
- Ausgabe von `java -version` und `mvn -version`.
- Ergebnis des Maven-Builds aus dem Projekt-Root (`mvn -U clean install -DskipTests`): erfolgreich oder fehlgeschlagen? Falls fehlgeschlagen: erste relevante Fehlermeldung und betroffener Maven-Schritt.
- Tritt das Problem nur in IntelliJ auf? Oder scheitert der Build auch im Terminal?
- Beim Serverstart: vollständige erste relevante `Caused by:`-Meldung und gegebenenfalls `APPLICATION FAILED TO START`-Abschnitt.
- Wenn möglich einen Screenshot der Run Configuration (ohne Zugangsdaten/Secrets).
Hinweis: Die Kästchen (☐) sind eine visuelle Checkliste und speichern keinen Abhakstatus.