SourceCode + Bilder in EIN Jar File packen

12
  1. #1
    babuschka


    SourceCode + Bilder in EIN Jar File packen - Standard SourceCode + Bilder in EIN Jar File packen
    Zuerst einmal die Frage ist es möglich Bilder zu einem Jar Archiv hinzuzufügen?
    Mit Bildern meine ich 5 Icons (für JButtons) + eine Image (für JPanel).
    Ich verwende JBuilder 2005. Ich habe ein JAR Archiv mittels Datei-Neu-Archiv-Source erstellt.
    Dieses funktioniert soweit auch, allerdings nur dann, wenn die Images im richtigen Pfad sind.
    bsp. ich habe die jar datei in C:\MeinProgramm\ liegen, die Images dazu sind auf C:\MeinProgramm\Images.
    führe ich nun die jar datei in C:\MeinProgramm aus, so funktioniert alles einwandfrei. Führe ich die gleiche Datei in C:\ aus, so werden die Bilder nicht angezeigt (Funktion bleibt erhalten).
    Deshalb meine Frage, ist es möglich EINE ausführbare Datei (aus meinem SourceCode + Bilder) zu erstellen?

  2. #2
    Wildcard


    Ja, einfach die Bilder mit ins jar packen und über den Classloader laden. Class#getResourceAsStream

  3. #3
    babuschka


    Zitat Zitat von Wildcard Beitrag anzeigen
    Ja, einfach die Bilder mit ins jar packen und über den Classloader laden. Class#getResourceAsStream
    und wie kann ich die bilder ins jar packen?
    im jbuilder gibt es die auswahl All classes and resources, damit müssten die bilder auch mit gepackt werden.

    wie verwende ich den Classloader?

    derzeit sieht mein source code so aus:
    Icon img = new ImageIcon("Images\\Button.png");
    button.setIcon(img);

  4. #4
    Wildcard


    Wie das beim JBuilder im Detail funktioniert kann ich dir nicht sagen.
    Classloader, wie gesagt mit Class#getResourceAsStream.

  5. #5
    babuschka


    Zitat Zitat von Wildcard Beitrag anzeigen
    Wie das beim JBuilder im Detail funktioniert kann ich dir nicht sagen.
    Classloader, wie gesagt mit Class#getResourceAsStream.
    und wie sieht der java code genau aus?

    ich brauche immer ein beispiel um ihn anwenden zu können

    derzeit sieht mein source code so aus:
    Java Code:
    1. Icon img = new ImageIcon("Images\\Button.png");
    2. button.setIcon(img);

  6. #6
    Wildcard


    Java Code:
    1. Icon img = new ImageIcon(this.getClass().getResource(path));

  7. #7
    U2nt


    Hab deine Lösung:
    Das Eclipse Plugin "FatJar"
    FatJar - Sourceforge

    Installation wird da beschrieben. Einfach die Bilder in deinem Workspace in den bin Folder reinpacken, aufs Project Rechtsklick "Build FatJar..." drücken... Wie beim exportieren.
    Jedoch wenn die ersten Einstellungen übernommen sind auf "Next" drücken, und dort kannste deine Bilder mit auswählen.

    Habs auch selber ausprobiert!

    Source:
    Java Code:
    1. import java.awt.FlowLayout;
    2.  
    3. import javax.swing.Icon;
    4. import javax.swing.ImageIcon;
    5. import javax.swing.JButton;
    6. import javax.swing.JFrame;
    7.  
    8.  
    9. public class Frame extends JFrame {
    10. private static final long serialVersionUID = 1L;
    11.  
    12. private JButton button = null;
    13. private String path = "A.png";
    14. private Icon icon = new ImageIcon(this.getClass().getResource(path));
    15.  
    16. public Frame() {
    17. super("Bild im Jar");
    18. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    19. setSize(100, 100);
    20. setLocationRelativeTo(null);
    21. setResizable(false);
    22. setLayout(new FlowLayout());
    23.  
    24. button = new JButton();
    25. button.setIcon(icon);
    26.  
    27. add(button);
    28. setVisible(true);
    29. }
    30.  
    31. public static void main(String[] args) {
    32. new Frame();
    33. }
    34. }


    Und die Jar ist im Anhang Hoffe das ist das, was du suchst!
    Angehängte Dateien Angehängte Dateien

  8. #8
    babuschka


    Zitat Zitat von U2nt Beitrag anzeigen
    Hab deine Lösung:
    Das Eclipse Plugin "FatJar"
    FatJar - Sourceforge

    Installation wird da beschrieben. Einfach die Bilder in deinem Workspace in den bin Folder reinpacken, aufs Project Rechtsklick "Build FatJar..." drücken... Wie beim exportieren.
    Jedoch wenn die ersten Einstellungen übernommen sind auf "Next" drücken, und dort kannste deine Bilder mit auswählen.

    Habs auch selber ausprobiert!

    Und die Jar ist im Anhang Hoffe das ist das, was du suchst!
    vielen dank für deine antwort.

    hab das gleich einmal probiert (nur den source code geändert).
    da bekomm ich folgenden fehler:
    Code:
    java.lang.NullPointerException
    	at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
    	at MyConverter.Window.Initialize(Window.java:272)
    	at MyConverter.Window.<init>(Window.java:54)
    	at MyConverter.MyConverter.<init>(MyConverter.java:20)
    	at MyConverter.MyConverter.main(MyConverter.java:29)
    Exception in thread "main"
    das gleiche, wenn ich dein programm ausführe.


    ich besorg mir schnell eclipse und hoffe, dass es dort funktioniert.

  9. #9
    U2nt


    Müsste eigentlich funktionieren, wäre nett wenn du deinen geänderten Sourcecode mal posten würdest (falls es dann immernochnicht geht...)

  10. #10
    Wildcard


    1. Man legt niemals Resourcen in bin ab, immer in einem source folder
    2. FatJar kann nichts was Eclipse nicht von Haus aus kann, ist also obsolete

  11. #11
    U2nt


    Um erlich zu seien finde ich beim Exportieren via normalen eclipse export KEINE Auswahl an Bilder bzw. anderen Resourcen. Ich kann lediglich die java und jar Files mitnehmen. Das sieht in FatJar viel besser aus - meiner Meinung nach.

    Gut das mit den Resources in den src Ordner sollte man machen.
    -> Was man dann aber bei FatJar beachten muss, ist das man den src Ordner als neuen dir einladen muss, damit man das Bild auch bekommt.

  12. #12
    babuschka


    Zitat Zitat von U2nt Beitrag anzeigen
    Müsste eigentlich funktionieren, wäre nett wenn du deinen geänderten Sourcecode mal posten würdest (falls es dann immernochnicht geht...)
    nein funktioniert auch mit Eclipse SDK Version: 3.5.1 nicht.

    hier mein programm:
    File-Upload.net - MyConverter.zip

  13. #13
    U2nt


    Und der Source-Code?...
    Mit dem Programm das ein Error aufruft kann ich nicht viel anfangen.

  14. #14
    babuschka


    Zitat Zitat von U2nt Beitrag anzeigen
    Und der Source-Code?...
    Mit dem Programm das ein Error aufruft kann ich nicht viel anfangen.
    source code ist mit dabei?
    src\*.java

  15. #15
    U2nt


    Also als erstes ist mir aufgefallen: Bilder wie "info.png" gibt es nicht, willst du aber haben in deinen java Files. ACHTUNG: Java achtet auf Groß und Kleinschreibung!

    Außerdem wirste das nie jemand anderen schicken können bei dem es funktioniert (außer mit Zufall), weil nicht jeder hat den Benutzer "Admin". Geb doch das Layout relativ an und nicht absolut.

    Ansonsten sind mir noch ein paar "sinnlose" Sachen aufgefallen wie:

    Java Code:
    1. public class MyConverter {
    2. public MyConverter() {
    3. new Window();
    4. }
    5.  
    6. public static void main(String[] args) {
    7. new MyConverter();
    8. }
    9. }


    Warum nicht einfach:

    Java Code:
    1. public class MyConverter {
    2. public static void main(String[] args) {
    3. new Window();
    4. }
    5. }


    Achja und sorry das es so lang gedauert hat
    -> Hab auch mit FatJar den Ordner "Images" (den Ordner würde ich auch lieber "images" nennen) in das .jar File mit einbezogen.

  16. #16
    babuschka


    Zitat Zitat von U2nt Beitrag anzeigen
    Also als erstes ist mir aufgefallen: Bilder wie "info.png" gibt es nicht, willst du aber haben in deinen java Files. ACHTUNG: Java achtet auf Groß und Kleinschreibung!
    stimmt bei info und und back.png stimmt die groß und kleinschreibung nicht.
    ich will die bilder nicht in meinen java files haben, sondern in einem ordner images, der im projektverzeichnis liegt.

    Zitat Zitat von U2nt Beitrag anzeigen

    Außerdem wirste das nie jemand anderen schicken können bei dem es funktioniert (außer mit Zufall), weil nicht jeder hat den Benutzer "Admin". Geb doch das Layout relativ an und nicht absolut.
    ich versteh nicht ganz, was du damit meinst, bzw was ich ändern muss.
    bezüglich layout? meinst du damit, dass ich es nicht fix für eine größe darstellen soll?


    Zitat Zitat von U2nt Beitrag anzeigen
    Ansonsten sind mir noch ein paar "sinnlose" Sachen aufgefallen wie:

    Java Code:
    1. public class MyConverter {
    2. public MyConverter() {
    3. new Window();
    4. }
    5.  
    6. public static void main(String[] args) {
    7. new MyConverter();
    8. }
    9. }


    Warum nicht einfach:

    Java Code:
    1. public class MyConverter {
    2. public static void main(String[] args) {
    3. new Window();
    4. }
    5. }
    mein jbuilder erzeigt die main methode automatisch, deswegen hab ich nur den konstruktor geändert, seh darin aber auch kein problem?

    Zitat Zitat von U2nt Beitrag anzeigen
    Achja und sorry das es so lang gedauert hat
    -> Hab auch mit FatJar den Ordner "Images" (den Ordner würde ich auch lieber "images" nennen) in das .jar File mit einbezogen.
    bis jz hab ich nur die dateinamen der bilder geändert, trotzdem hat sich an der fehlermeldung nichts geändert?
    ps. ich führe das programm mit eclipse aus!

  17. #17
    U2nt


    Das mim Konstruktor is einfach nur "überflüssiger" Code finde ich. Du hast ja ein Layout das nicht offiziell beim JRE dabei ist, also gibst du im Buildpath eine jar file an die das Layout drinne hat. Doch diesen haste Absolut festgelegt also:
    C:\Dokumente und Einstellungen\Admin\..
    Und nicht jeder hat zufälligerweise genau da diese jar datei Die solltest du also relativ zum Projekt festlegen und am besten im jar direkt mitliefern.

  18. #18
    babuschka


    Zitat Zitat von U2nt Beitrag anzeigen
    Das mim Konstruktor is einfach nur "überflüssiger" Code finde ich. Du hast ja ein Layout das nicht offiziell beim JRE dabei ist, also gibst du im Buildpath eine jar file an die das Layout drinne hat. Doch diesen haste Absolut festgelegt also:
    C:\Dokumente und Einstellungen\Admin\..
    Und nicht jeder hat zufälligerweise genau da diese jar datei Die solltest du also relativ zum Projekt festlegen und am besten im jar direkt mitliefern.
    sogar hier weiß ich nicht weiter.

    ich klicke rechte maustaste - buildpath - configure build path.
    dort kann ich aber nur einen fixen pfad angeben und keinen relativen.



    ansonsten funktioniert jz endlich das jar file erstellen. mit einer ausnahme: nur dann, wenn ich die bilder in den bin ordner ablege, sind sie im src ordner lässt sich mein programm nicht ausführen.

  19. #19
    U2nt


    Zitat Zitat von lisaaa17 Beitrag anzeigen
    ansonsten funktioniert jz endlich das jar file erstellen. mit einer ausnahme: nur dann, wenn ich die bilder in den bin ordner ablege, sind sie im src ordner lässt sich mein programm nicht ausführen.
    Also meinste das es komplett nicht geht wenne die im src Ordner ablagert, oder das er Sie einfach nicht im jar file mit reinnimmt. Beim Zweiten Fall sieht die Lösung so aus:

    -> FatJar: ErsteBildschirm wie gewünscht ausfüllen -> Next drücken
    -> Rechts auf "Add Dir..." drücken und den Src Ordner auswählen. Anschließend NUR die Bilder ausm Source Ordner nehmen (esseiden du willst auch die java files im jar).

    Ich gucke mal ob ichs rasch ma hinkrieg mit dem Buildpath.

  20. #20
    U2nt


    Hey -> Ging ja schnell, bei mir funktioniert der Converter nun einwandfrei: Die Pictures werden mitgeliefert, das Layout und es wird keine Exception geliefert.

    Hab die Source und das funktionierende Jar (mit FatJar erstellt) im Anhang

    PS: Wieso setze des eigentlich aufs Windows LAF?
    Angehängte Dateien Angehängte Dateien

12
Ähnliche Themen
  1. Eclipse Sourcecode in Word file kopieren
    Von icarus2 im Forum IDEs und Tools
    Antworten: 7
    Letzter Beitrag: 16.08.2009, 15:44
  2. Lade Bilder aus einem Jar File
    Von Fadi im Forum Allgemeine Java-Themen
    Antworten: 6
    Letzter Beitrag: 16.01.2009, 13:53
  3. bilder in jar file?
    Von Zimms im Forum Java Basics - Anfänger-Themen
    Antworten: 6
    Letzter Beitrag: 22.03.2006, 11:36
  4. Help! Kann Bilder nach Packen in ein jar-File nimmer finden!
    Von TimWischmeier im Forum Java Basics - Anfänger-Themen
    Antworten: 17
    Letzter Beitrag: 25.05.2005, 22:12
  5. Bilder in JAR-File finden
    Von grayson im Forum Allgemeine Java-Themen
    Antworten: 5
    Letzter Beitrag: 07.07.2004, 10:46