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.
Hallo zusammen! Ich bin es noch einmal. Mein Tower-Defense-Spiel ist jetzt fertig, und ich versuche, eine ausführbare JAR-Datei zu erstellen. Ich habe mein Projekt mit Maven umgesetzt und erstelle die JAR-Datei über das Maven-Jar-Plugin Version 3.3.0. Wenn ich diese ausführe, wird mir jedoch angezeigt, dass kein Hauptmanifestattribut vorhanden ist. In meinem MANIFEST.MF-Datei steht jedoch folgendes:
Was muss ich ändern, um die JAR-Datei ausführen zu können? PS: Wenn ich die JAR-Datei über ein Artefakt erstelle, werden die Bilder aus dem Ressourcenordner nicht geladen.
Also in der pom hast Du gar keinen Hinweis bezüglich Manifest. Daher hast Du da auch nicht das, was Du erwartest denke ich mal.
Damit du mit Maven ein ausführbares JAR bekommst, musst Du da entsprechend die Konfiguration einfügen. Per maven-jar-plugin könntest Du das so machen:
Und der Zugriff ist so falsch. Da versuchst du ja eine Datei zu laden, die vom Arbeitsverzeichnis aus unter src/main/resources/ zu finden ist. Das geht natürlich nur, Wenn Du diese Verzeichnisstruktur hast und das Arbeitsverzeichnis genau an der Stelle ist. Die Dateien aus src/main/resources werden aber mit in das Jar kopiert und du kannst da dann zugreifen z.B. per getClass().getResourceAsStream("/slime.png"). Das gibt ein ImageStream zurück, den Du an ImageIcon geben kannst.
Das Erzeugen der Artifakte würde ich ignorieren - Du willst doch mit Maven arbeiten denke ich, also sollte alles in Maven erfolgen.
Wenn ich so eine jar erstelle kommt aber folgendes:
Code:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< net.tim:BaseDefence >-------------------------
[INFO] Building BaseDefence 1.1
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- jar:3.3.0:jar (default-cli) @ BaseDefence ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: C:\Informatik\Projekte\Java\BaseDefence\target\BaseDefence-1.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.308 s
[INFO] Finished at: 2024-03-13T15:09:24+01:00
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
Exception in thread "main" java.lang.RuntimeException: Could not load slime image
at net.tim.entity.Slime.<init>(Slime.java:22)
at net.tim.wave.WaveManager.generateWaveList(WaveManager.java:57)
at net.tim.wave.WaveManager.<init>(WaveManager.java:17)
at net.tim.gui.GamePanel.<init>(GamePanel.java:36)
at net.tim.gui.Frame.<init>(Frame.java:14)
at net.tim.core.Verwaltung.<init>(Verwaltung.java:8)
at net.tim.core.Main.main(Main.java:6)
Das sieht doch schon einmal gut aus - Projekt und jar sind soweit korrekt. Jetzt kommen halt nur noch Fehler im Code.
Bei Ressourcen muss man auch auf Gross-/Kleinschreibung achten. Du versuchst ein slime.png zu laden, aber es ist ein Slime.png. Also beim Aufruf auch /Slime.png laden und der Fehler sollte dann weg sein.