Seite 1 von 1

Eclipse: Runnable JAR file

Verfasst: 21.02.2012 11:41
von Angelo
Hallo,
in meinem letzten Post zu Java ging es darum, eine Java-Archivdatei auf Kommandozeilenebene zu erstellen. Dank der Hilfe von DarkDragon hat diese ausführbare Datei dann auch das gemacht, was sie tun sollte. So sah der entsprechende Code aus:

Code: Alles auswählen

import javax.swing.*;
import java.awt.*;
public class Gui {
   public static void main(String[] args) {
      MeinPanel my_panel = new MeinPanel();
      JFrame my_frame = new JFrame();
      my_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      my_frame.add(BorderLayout.CENTER, my_panel);
      my_frame.setSize(300,300);
      my_frame.setVisible(true);
   }
}
class MeinPanel extends JPanel {
   public void paintComponent(Graphics g) {
      Image my_image = new ImageIcon(getClass().getResource("bild.jpg")).getImage();
      g.drawImage(my_image, 40, 40, this);
   }
}
Ich bin zwischenzeitlich in Eclipse eingestiegen und habe als erstes ein Projekt Gui angelegt und dann den obigen Code editiert. Die Datei "bild.jpg" habe ich in den bin-Ordner getan. Wenn ich auf den Run-Button drücke, erscheint das, was auch erscheinen soll.

Dann dachte ich mir, jetzt mal mit Eclipse eine ausführbare JAR-Datei zu erstellen: also Rechtsklick auf Projektname - Export - Runnable JAR File etc. Diese JAR-Datei enthält aber nicht die Datei "bild.jpg" - das kann ich an der Größe sehen. Es ist wohl anscheinend so, dass zwar die class-Dateien, die im bin-Ordner sind, in das JAR gepackt werden, aber nicht die jpg-Datei, die ja ebenfalls im bin-Ordner liegt. Natürlich habe ich mich in Java-Foren umgeschaut. Da wurde gesagt, dass jpg-Dateien im src-Ordner liegen müssen. Aber auch das klappt nicht. Ich habe keine Idee mehr, was ich noch ausprobieren könnte. Vielleicht kann mir jemand auf die Sprünge helfen ...

Re: Eclipse: Runnable JAR file

Verfasst: 02.03.2012 11:04
von Froggerprogger
Hi,

die Funktion "Export - Runnable JAR File" dient dazu, dass man ein Run-Profil inkl. seiner Parametereinstellungen bequem exportieren kann. Das Wort "Runnable" bezieht sich also nicht darauf, dass die .jar-Datei nachher ausführbar ist, sondern dass man ein Runnable als Vorlage für dessen Erstellung auswählen kann. Wenn Dein ganzes Programm wie üblich nur auf einer main()-Methode basiert, kannst Du auch die Funktion "Export - JAR File" nutzen. Diese bietet einen weit besseren Dialog an, insbesondere kannst Du im ersten Dialogfenster alle Dateien auswählen, die in die jar-Datei gepackt werden sollen. Im zweiten Dialog "Save the description..." kannst Du zudem die Einstellungen in eine .jardesc-Datei speichern, diese kannst Du dann beim nächsten mal direkt starten, um das .jar erneut zu erstellen, ohne den Dialog zu nutzen. Der wichtigste Punkt für ausführbare .jar-Dateien ist auf der dritten Dialogseite "Main class" hier die Klasse mit der gewünschten main()-Methode eintragen.

Um auf Resourcen zuzugreifen, ist es praktisch, beim Laden den Resourcenamen mit einem / zu beginnen, welcher das Rootverzeichnis des .jars bezeichnet. Liegt Dein Bild also in /data/pics/bild.jpg, dann kannst Du es direkt per "/data/pics/bild.jpg" als Resource laden. Andernfalls ist das Verzeichnis relativ zur Klasse, also "bild.jpg" sucht im selben package wie die ladende Klasse (damit im selben Unterordner des /src-Verzeichnisses).

Die so erstellte .jar-Datei kann wie gewohnt mittels "java -jar myjarfile.jar" bzw. mit einem Doppelklick gestartet werden.

Noch ein Tip: Um in eine .jar-Datei "hineinzuschauen", kannst Du sie auch einfach temporär in .zip umbennen und dann mit jedem Archivmanager darin herumsuchen. Derart lassen sich sogar nachträglich neue/weitere Daten in eine .jar-Datei hineinkopieren. Abschließend einfach nur wieder nach .jar umbennen.

Und noch ein Tip: Falls Du aus irgendwelchen Gründen unbedingt "Export - Runnable JAR File" nehmen möchtest, dann kannst Du auch zuerst eine eigenständige .jar-Datei "data.jar" nach obiger Methode erstellen, welche lediglich alle Resourcen enthält. In den Projekteinstellungen dann unter "Java Build Path - Libraries - Add Jar..." dieses "data.jar" als Abhängigkeit hinzufügen, dann wird es bei "Export - Runnable JAR File" in das neue .jar hineinextrahiert.

Re: Eclipse: Runnable JAR file

Verfasst: 02.03.2012 19:31
von Angelo
Danke, Froggerprogger, für Deinen Hinweis. Mir war nicht klar, dass man auch über Export | JAR File ein ausführbares Jar bekommt. Da habe ich das Wort "runnable" falsch verstanden. Der Tipp mit dem Einbinden der Bilddatei als Resource war auch wichtig. Ich habe jetzt im zugrunde liegenden package einen source folder erstellt und die Bilddatei dort hinein gepackt. Nochmals Danke!