Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hauptklasse konnte nicht gefunden oder geladen werden
[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
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.
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?
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?
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.
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:
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.
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.