Hauptklasse konnte nicht gefunden oder geladen werden

8u3631984

Bekanntes Mitglied
Hallo zusammenn ich baue gerade ein Spring Boot Project mit Kotlin als DSL.

Hier meine Main Class :

Die Klasse befindet sich im Package :
package de.cms.media;

Java:
@SpringBootApplication
public class MediaApp implements WebMvcConfigurer {

  public static void main(String[] args) {
    SpringApplication.run(MediaApp.class, args);
  }

  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/api/v1/**").allowedOrigins("http://localhost:8081");
  }
}

Hier ein Auszug aus meiner build.gradle.kts
Java:
plugins {
    java
    jacoco  
    id("com.palantir.docker") version "0.34.0" apply true
}

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "de.cms.media.MediaApp"
    }
}

java.sourceCompatibility = JavaVersion.VERSION_17
java.targetCompatibility = JavaVersion.VERSION_17
...


Wenn ich nun die JAR DAtei starte :
Bash:
[sebastian@laptop-sebastian java-media-cms]$ java -jar build/libs/java-media-cms.jar
Fehler: Hauptklasse de.cms.media.MediaApp konnte nicht gefunden oder geladen werden
Ursache: java.lang.NoClassDefFoundError: org/springframework/web/servlet/config/annotation/WebMvcConfigurer

Hat jemand eine Idee was ich machen kann ?
 

LimDul

Top Contributor
Ich hab keine Ahnung von Gradle - aber in Maven benutzt spring ein eigenes Plugin um ein entsprechendes Jar mit allen Abhängigkeiten zu bauen. Weil mit dem Standard-Build kommt natürlich nur ein Jar mit deinen eigenen Klassen raus, den rest müsste man mit -cp zu allen Libs angeben.

Ich hab keine Ahnung wie das in Gradle aussieht - aber ist das entsprechend analog da eingebunden? Das kann man da nicht sehen, bzw. wenn ich die plugins section interpretiere würde ich eher sagen nein.
 

KonradN

Super-Moderator
Mitarbeiter
Ja, das ist da ebenso aufgebaut.

Gradle hat da die Ziele "bootRun" zum starten und "bootJar" um das jar file zu bauen.

Wobei auch beim normalen buld das auch mit gebaut wird.

Daher wäre die Frage, wie das Projekt und das jar File überhaupt gebaut wurden. Ist es evtl. kein per Spring Initializr gebautes Projekt? Oder wurde da irgendwie ohne gradle das jar File gebaut?
 

8u3631984

Bekanntes Mitglied
Ja, das ist da ebenso aufgebaut.

Gradle hat da die Ziele "bootRun" zum starten und "bootJar" um das jar file zu bauen.

Wobei auch beim normalen buld das auch mit gebaut wird.

Daher wäre die Frage, wie das Projekt und das jar File überhaupt gebaut wurden. Ist es evtl. kein per Spring Initializr gebautes Projekt? Oder wurde da irgendwie ohne gradle das jar File gebaut?
Ich baue das Project per
Bash:
gradle clean build docker
 

KonradN

Super-Moderator
Mitarbeiter
Das ist auch ein Projekt, welches per Spring Initializr erstellt wurde?

Also einfaches Beispiel:
  • start.spring.io und einfaches demo Projekt mit MVC Abhängigkeit
  • gradle clean build und ich erhalte in build/libs demo-0.0.1-SNAPSHOT.jar und demo-0.0.1-SNAPSHOT-plain.jar

Das erste enthält im jar auch alle Abhängigkeiten und ist dementsprechend groß.

Das docker Ziel habe ich jetzt bei mir nicht mit ausgeführt, da ich diesbezüglich auf diesem Rechner bisher kein Setup für habe. Aber ich würde da eigentlich nicht erwarten, dass dies an den Ergebnissen aus dem build Lauf etwas ändern würde.
 

8u3631984

Bekanntes Mitglied
Ich habe das Project per gradle init erzeugt.
Wie sieht bei dir die build.gradle Datei aus ?
Also konkret welche Plugins sind da enthalten ?

Ist das Plugin org.springframework.boot notwendig ?
 

LimDul

Top Contributor
Erstell dir ein Projekt über start.spring.io und kopiere die fehlenden Teile. Ja, du brauchst Spring-Boot Plugins
 

KonradN

Super-Moderator
Mitarbeiter
Der normale Weg bei Spring Boot ist die Erstellung der Projekte über den Spring Initializer. Dann hast Du das Spring Plugin und eine Basis Konfiguration über ein Parent Projekt (bei Maven - ob das bei Gradle prinzipiell ähnlich ist, weiss ich nicht. Ich nutze eigentlich sonst immer Maven).

Das ist der einfache, schnelle Einstieg in Java der gerade am Anfang wichtig ist.

Prinzipiell notwendig ist das nicht. Du kannst - so du weisst, was Du machst - auch alles selbst machen. Da ich die Abhängigkeiten gerne selbst verwalten und prüfen will und nicht durch ein Parent Projekt - welches nicht unter meiner Kontrolle ist - alles vorgegeben bekommen möchte - löse ich das meist auch immer auf. Dann habe ich die notwendigen Elemente aus den parent Projekten direkt bei mir in meinem Maven Projekt.
==> Das setzt aber voraus, dass Du weisst, was Du machst.

Du kannst Dein Gradle Projekt nutzen. Nur eben musst du dann dafür sorgen, dass Du auch die Abhängigkeiten hast. Bei dem Spring Initializr Projekt wird in der jar Datei in BOOT-INF/lib eine Kopie der Abhängigkeiten abgelegt:
Code:
   creating: BOOT-INF/lib/
 extracting: BOOT-INF/lib/spring-webmvc-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-web-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-boot-autoconfigure-3.0.2.jar 
 extracting: BOOT-INF/lib/spring-boot-3.0.2.jar 
 extracting: BOOT-INF/lib/jakarta.annotation-api-2.1.1.jar 
 extracting: BOOT-INF/lib/spring-context-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-aop-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-beans-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-expression-6.0.4.jar 
 extracting: BOOT-INF/lib/spring-core-6.0.4.jar 
 extracting: BOOT-INF/lib/snakeyaml-1.33.jar 
 extracting: BOOT-INF/lib/jackson-datatype-jsr310-2.14.1.jar 
 extracting: BOOT-INF/lib/jackson-module-parameter-names-2.14.1.jar 
 extracting: BOOT-INF/lib/jackson-annotations-2.14.1.jar 
 extracting: BOOT-INF/lib/jackson-core-2.14.1.jar 
 extracting: BOOT-INF/lib/jackson-datatype-jdk8-2.14.1.jar 
 extracting: BOOT-INF/lib/jackson-databind-2.14.1.jar 
 extracting: BOOT-INF/lib/tomcat-embed-websocket-10.1.5.jar 
 extracting: BOOT-INF/lib/tomcat-embed-core-10.1.5.jar 
 extracting: BOOT-INF/lib/tomcat-embed-el-10.1.5.jar 
 extracting: BOOT-INF/lib/micrometer-observation-1.10.3.jar 
 extracting: BOOT-INF/lib/logback-classic-1.4.5.jar 
 extracting: BOOT-INF/lib/log4j-to-slf4j-2.19.0.jar 
 extracting: BOOT-INF/lib/jul-to-slf4j-2.0.6.jar 
 extracting: BOOT-INF/lib/spring-jcl-6.0.4.jar 
 extracting: BOOT-INF/lib/micrometer-commons-1.10.3.jar 
 extracting: BOOT-INF/lib/logback-core-1.4.5.jar 
 extracting: BOOT-INF/lib/slf4j-api-2.0.6.jar 
 extracting: BOOT-INF/lib/log4j-api-2.19.0.jar

Und wenn man sich die MANIFEST.MF anschaut, dann wird deutlich, dass Spring da deutlich mehr macht:
Code:
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.demo.DemoApplication
Spring-Boot-Version: 3.0.2
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 17

Aber das wird nicht so zwingend gebraucht. Ich habe in der Vergangenheit Spring Boot in eine normale App eingebaut, da ich die Dependency Injection von Spring haben wollte. Es geht sehr viel! Nur man muss dann über viele Stolpersteine drüber.

Und bei Dir scheitert es gerade schon an den Abhängigkeiten, die Du nicht mit bereit stellst.
 

KonradN

Super-Moderator
Mitarbeiter
Und schau Dir start.spring.io an - selbst wenn Du da nicht die Projekte verwenden willst: Du kannst Dir ansehen, was da an Projekt aufgebaut wird. Das ist auf jeden Fall immer eine gute Unterstützung um dann zu schauen, was denn die Spring Entwickler vorgesehen haben um dann die notwendigen Dinge auch bei sich zu machen.

Aber wie @LimDul gesagt hat: Es ist sehr zu empfehlen wirklch damit zu arbeiten. Das ist der einfachste und beste Weg. Wenn dann etwas nicht geht, dann findest Du leichter Hilfe, denn das ist der Weg, den eigentlich alle kennen. Selbst wer das aus irgend welchen Gründen nicht nutzen will, der kennt es.
 

8u3631984

Bekanntes Mitglied
Ja vielen lieben Dank habe das nun per springboot.io noch mal gebaut und meine build.gradle angepasst.
Das Problem war das fehlende Plugin.

Nun sieht es so aus und klappt auch :

Bash:
plugins {
    java
    jacoco
    id("org.springframework.boot") version "2.7.8" apply true
    id("com.palantir.docker") version "0.34.0" apply true
}

springBoot{
    mainClass.set("de.cms.media.MediaApp")
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Probleme mit Java WebStart; Hauptklasse konnte nicht gef. Tools - Maven, Gradle, Ant & mehr 18
Moman2022 Hauptklasse kann nicht gefunden werden gradle build Tools - Maven, Gradle, Ant & mehr 3
S Hauptklasse kann nicht geladen werden Tools - Maven, Gradle, Ant & mehr 2
U Hauptklasse wird nicht gefunden. Tools - Maven, Gradle, Ant & mehr 9
T Webstart: Anwendung konnte nicht gestartet werden. Tools - Maven, Gradle, Ant & mehr 7
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
S Gradle kann Lottie Implementation nicht finden Tools - Maven, Gradle, Ant & mehr 5
Gradle build funktioniert nicht Tools - Maven, Gradle, Ant & mehr 10
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
W gradlew funktioniert nicht Tools - Maven, Gradle, Ant & mehr 37
8u3631984 Gradle nicht benötigte Dependencies finden Tools - Maven, Gradle, Ant & mehr 3
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
N Regex in nicht-gierigen Regex umwandeln Tools - Maven, Gradle, Ant & mehr 0
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Maven Bekomme cobertura in jenkins nicht zu laufen :-( Tools - Maven, Gradle, Ant & mehr 1
T Tomcat Server zeigt Webservice nicht an Tools - Maven, Gradle, Ant & mehr 21
pkm Beim Deployen wird ein Package nicht gefunden, obwohl aus Buildpath. Tools - Maven, Gradle, Ant & mehr 0
J netbeans - jasperreports - gradle - klappt nicht Tools - Maven, Gradle, Ant & mehr 0
C runnable jar nicht ausführbar Tools - Maven, Gradle, Ant & mehr 4
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
L Ausführbare Jar-File funktioniert nicht Tools - Maven, Gradle, Ant & mehr 15
C while Schleife in Plugin stoppt nicht Tools - Maven, Gradle, Ant & mehr 23
X Javapackager kann common.io nicht finden Tools - Maven, Gradle, Ant & mehr 4
D Deployte Anwendung startet auf dem anderen PC nicht ! Tools - Maven, Gradle, Ant & mehr 1
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
D Ressource nach deployen nicht erreichbar Tools - Maven, Gradle, Ant & mehr 1
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
C Tomcat GWT Beispielprojekt läuft nicht. Tools - Maven, Gradle, Ant & mehr 0
A Tomcat deployed nicht Tools - Maven, Gradle, Ant & mehr 6
C Tomcat nicht über 8080 erreichbar Tools - Maven, Gradle, Ant & mehr 3
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
M Maven Dependency lädt pom und nicht jar Tools - Maven, Gradle, Ant & mehr 0
V Appletviewer - Befehl nicht bekannt Tools - Maven, Gradle, Ant & mehr 1
D Ant JAR-Ressourcen in JNLP-Datei sind nicht von demselben Zertifikat signiert Tools - Maven, Gradle, Ant & mehr 2
T build job läuft nicht mit findBugs...WARUM? Tools - Maven, Gradle, Ant & mehr 1
T test schlägt im build fehl, lokal nicht, warum? Tools - Maven, Gradle, Ant & mehr 2
J KomServer startet nicht Tools - Maven, Gradle, Ant & mehr 4
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
K Subversion svn & Jenkins - Änderungen werden nicht angezeigt Tools - Maven, Gradle, Ant & mehr 4
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
VfL_Freak Webstart Startzeit verkürzen, wenn der WebServer nicht erreichbar ist ? Tools - Maven, Gradle, Ant & mehr 3
B Maven Selenium-Test läuft nicht unter Firefox Tools - Maven, Gradle, Ant & mehr 2
J Executable JAR geht nicht mehr... Tools - Maven, Gradle, Ant & mehr 2
D [MAVEN] Artifact wird nicht vom Repository(manager) geladen Tools - Maven, Gradle, Ant & mehr 5
G Webstart Anwendung läuft unter OSX aber nicht unter Windows Tools - Maven, Gradle, Ant & mehr 5
M Applet Applet funktioniert in Google Chrome nicht Tools - Maven, Gradle, Ant & mehr 2
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
H Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 3
Q Applet Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 14
Spin SVN - cachen and session nicht commiten Tools - Maven, Gradle, Ant & mehr 3
D [Maven] Profil funktioniert bei package aber nicht bei release (help:active-profiles -> aktiv) Tools - Maven, Gradle, Ant & mehr 4
M Java Application startet bei verschiedenen JRE's nicht Tools - Maven, Gradle, Ant & mehr 7
Ollek Launch4J - EXE mit ICO klappt nicht Tools - Maven, Gradle, Ant & mehr 3
G Maven JAR-File schmeißt NoClassDefFoundError wenn /lib Verzeichnis nicht daneben entpackt wird Tools - Maven, Gradle, Ant & mehr 9
c_sidi90 Maven findet javac Compiler nicht Tools - Maven, Gradle, Ant & mehr 4
eskimo328 Maven Firmen Repository Dependencies nicht über Internet Tools - Maven, Gradle, Ant & mehr 7
S Applet Signieren, Vertrauenswürder und nicht-vertrauenswürdiger Code Tools - Maven, Gradle, Ant & mehr 16
T Maven das mvn assembly:assembly funktioniert nicht so richtig Tools - Maven, Gradle, Ant & mehr 3
musiKk Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles Tools - Maven, Gradle, Ant & mehr 5
A ProcessBuilder kann nach Deployment File nicht finden Tools - Maven, Gradle, Ant & mehr 4
P Ant svnant - Userdaten nicht speichern Tools - Maven, Gradle, Ant & mehr 4
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
M Jar kann nicht gestartet werden - main Class not found Tools - Maven, Gradle, Ant & mehr 5
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
M EJB wird nicht richtig deployed Tools - Maven, Gradle, Ant & mehr 2
T Maven pom.xml erkennt jboss nicht Tools - Maven, Gradle, Ant & mehr 4
S Applet GUI nicht im Webbrowser sichtbar Tools - Maven, Gradle, Ant & mehr 5
M Java3d Linie mit Antialiasing geht nicht ??? Tools - Maven, Gradle, Ant & mehr 15
DStrohma Webstart Webstart geht nicht da sqljdbc.jar nicht signiert werden kann Tools - Maven, Gradle, Ant & mehr 2
jemandzehage .jnlp mit JOGL startet nicht korrekt Tools - Maven, Gradle, Ant & mehr 9
B Jar-Datei funktioniert nicht Tools - Maven, Gradle, Ant & mehr 4
F Applet findet include nicht Tools - Maven, Gradle, Ant & mehr 15
M Maven Maven compiliert nicht mit enum Tools - Maven, Gradle, Ant & mehr 7
S Webstart startet unter Linux, bei Windows nicht Tools - Maven, Gradle, Ant & mehr 8
S Fehler im IE, aber nicht in der IDE - wie finden? Tools - Maven, Gradle, Ant & mehr 6
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
P Applet läuft nicht in Browser Tools - Maven, Gradle, Ant & mehr 21
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
reibi Maven : Resourcen NICHT mit einbinden beim Builden Tools - Maven, Gradle, Ant & mehr 10
D Java Webstart startet .jar file nicht Tools - Maven, Gradle, Ant & mehr 13
S Applet geht nicht Tools - Maven, Gradle, Ant & mehr 25
U Jar funktioniert nicht als Applet Tools - Maven, Gradle, Ant & mehr 3
S Maven + m2eclipse / "add dependency" sieht Maven central Repository nicht Tools - Maven, Gradle, Ant & mehr 6
Icewind Applet reagiert nach neu laden der Webseite nicht mehr verlässlich auf KeyEvents Tools - Maven, Gradle, Ant & mehr 6
P Webstart will nicht Tools - Maven, Gradle, Ant & mehr 4
N Reflection funktioniert nicht in Jar Tools - Maven, Gradle, Ant & mehr 5
P Webstart findet Klasse nicht! Tools - Maven, Gradle, Ant & mehr 2
S Fehler in einem Upload - Applet (nicht gelöst!!) Tools - Maven, Gradle, Ant & mehr 2
D Ant erkennt die Packages nicht Tools - Maven, Gradle, Ant & mehr 2

Ähnliche Java Themen

Neue Themen


Oben