SourceCode + Bilder in EIN Jar File packen

Dieses Thema SourceCode + Bilder in EIN Jar File packen im Forum "Deployment" wurde erstellt von babuschka, 5. Jan. 2010.

Thema: 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...

  1. 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. Hinweis: KOSTENLOSE Java-Grundlagen DVD. Sichere dir hier den kostenlosen Zugriff auf 7 Stunden Video Java-Know How und starte richtig durch!
  3. Ja, einfach die Bilder mit ins jar packen und über den Classloader laden. Class#getResourceAsStream
     
  4. 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);
     
  5. Wie das beim JBuilder im Detail funktioniert kann ich dir nicht sagen.
    Classloader, wie gesagt mit Class#getResourceAsStream.
     
  6. und wie sieht der java code genau aus?

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

    derzeit sieht mein source code so aus:
    Code (Java):
    Icon img = new ImageIcon("Images\\Button.png");
    button.setIcon(img);
     
  7. Code (Java):
    Icon img = new ImageIcon(this.getClass().getResource(path));
     
  8. 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! :D

    Source:
    Code (Java):
    import java.awt.FlowLayout;

    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;


    public class Frame extends JFrame {
        private static final long serialVersionUID = 1L;
       
        private JButton button = null;
        private String path = "A.png";
        private Icon icon = new ImageIcon(this.getClass().getResource(path));
       
        public Frame() {
            super("Bild im Jar");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(100, 100);
            setLocationRelativeTo(null);
            setResizable(false);
            setLayout(new FlowLayout());
           
            button = new JButton();
            button.setIcon(icon);
           
            add(button);
            setVisible(true);
        }
       
        public static void main(String[] args) {
            new Frame();
        }
    }
    Und die Jar ist im Anhang :) Hoffe das ist das, was du suchst!
     
  9. vielen dank für deine antwort.

    hab das gleich einmal probiert (nur den source code geändert).
    da bekomm ich folgenden fehler:
    Code (Text):
    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.
     
    Zuletzt von einem Moderator bearbeitet: 10. Jan. 2010
  10. Müsste eigentlich funktionieren, wäre nett wenn du deinen geänderten Sourcecode mal posten würdest (falls es dann immernochnicht geht...)
     
  11. 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
     
  12. 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.
     
  13. nein funktioniert auch mit Eclipse SDK Version: 3.5.1 nicht.

    hier mein programm:
    File-Upload.net - MyConverter.zip
     
  14. Und der Source-Code?...
    Mit dem Programm das ein Error aufruft kann ich nicht viel anfangen.
     
  15. source code ist mit dabei?
    src\*.java
     
  16. 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:

    Code (Java):
    public class MyConverter {
        public MyConverter() {
            new Window();
        }
       
        public static void main(String[] args) {
            new MyConverter();
        }
    }
    Warum nicht einfach:

    Code (Java):
    public class MyConverter {
        public static void main(String[] args) {
            new Window();
        }
    }
    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.
     
  17. 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.

    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?


    mein jbuilder erzeigt die main methode automatisch, deswegen hab ich nur den konstruktor geändert, seh darin aber auch kein problem?

    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!
     
  18. 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.
     
  19. 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.
     
    Zuletzt von einem Moderator bearbeitet: 10. Jan. 2010
  20. 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.
     
    Zuletzt bearbeitet: 11. Jan. 2010
  21. 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?
     
  22. danke, genau so hab ich mir das vorgestellt.
    aber auch bei dir sind die bilder im src ordner. auch ich hbas mit fatjar erstellt.
    zu der miglayout.jar, die sollte doch auch in das jar file gepackt werden, zumindest war das meine überlegung. ich will keine zusätzliche dateien, sondern wirklich nur 1 ausführbare Datei, die ich auf mehreren Rechnern ausführen kann. ich habe meine JAR Datei bereits auf anderen Rechnern (auch ohne Admin User) getestet und funktioniert einwandfrei.
    was mir noch aufgefallen ist, dass meine jar datei 277kB groß ist, deine nur 155kB. Liegt vl daran, dass ich wirklich alles gepackt habe. Die 120kB machen das Kraut aber auch nicht fett.
    zum Layout: Mir gefällt dieses JAVA Design einfach nicht, dunkelgraue Fenster, die violetten Markierungen, bei aktiven (im Focus ??? stehende) Buttons, ..., deshalb hab ich mich für das klassische Windows Design entschieden. Wenns da noch andere Windows Styles gibt wäre ich über jede Information erfreut.

    nocheinmal vielen dank, für die Mühe, die ich euch gemacht habe :D
     
  23. habe das selbe problem.

    ich hab den ganzen heutigen Tag damit verschwendet, ein ausführbares jar File zu erstellen, das sämtliche Bilder beinhaltet.
    Mein Programm wurde im JBuilder geschrieben, mittlerweile habe ich mir Eclipse+FatJar herunter gleaden und es dort zum ausführen gebracht.

    Nach zahlreicher Forenrecherche habe ich jz alle Lösungsvorschläge durch, trotzdem funktioniert es nicht.


    Punkt1:
    Bilder müssen mit
    Code (Java):
    URL url = getClass().getClassLoader().getSystemResource(Filename);
    img = Toolkit.getDefaultToolkit().getImage(url);
     
    geladen werden.
    In diversen Foren findet man folgende Angaben zum Filename:
    • "Images/help.png"
    • "/Images/help.png"
    • "./Images/help.png"

    ich habe mir das Programm MyConverter, das hier zum Download bereitgestellt wurde, disassembliert und festgestellt Lösung 1 also ohne / zu Beginn müsste funktionieren.


    Punkt2:
    wo gehöhren die bilder gespeichert.
    meine ordnerübersicht für mein programm sieht wie folgt aus:

    [​IMG]


    JBuilder fragt mich beim Erstellen eines Projektes nach dem Namen. Aufstellungsassistent ist der Name des Projektes, das im gleichnamigen Ordner erstellt wird. aufstellungsassistent ist der packagename.

    gehört nun der Images Ordner auf die gleiche Ebene wie die Bak, Classes, SRC; in den SRC; in den CLASSES Ordner oder generell in den ersten Aufstellungsassistent Ordner?


    Punkt3:


    Mit JBuilder kann man eine ausführbare JAR Datei erstellen. Das klappt auch wunderbar, allerdings nur solange, solange die Bilder auf der gleichen Ebene gespeichert sind.
    Mein nächster Schritt war dann, dass ich das JAR Archiv mit 7zip aufgemacht habe und die Bilder nachträglich hinzugefügt habe. Das funktioniert nicht.

    Daraufhin habe ich, das in diesem Thread erwähnte Plugin FatJar in Eclipse probiert. das Archiv enthält die Bilder, es ist auch dementsprechend groß, lässt sich allerdings nicht ausführen. Damit meine ich es geschieht nichts, wenn ich auf das JarArchiv doppelklicke.
    In einem anderen Forum steht geschrieben, dass man beim ausführen des FatJar Plugins einen classPath angeben muss.
    jar File startet nicht - Java @ tutorials.de: Forum & Hilfe
    Nur weiß ich nicht, wie das funktioniert.
     
  24. der class path unterscheidet sich je nach verwendeten programm.
    jbuilder: projektname/projektname/classes
    eclipse: projektname/projektname/bin

    ich habe wieder mit beiden programmen ein jar archiv erstellt:
    beide lassen sich nicht ausführen, deswegen habe ich in der konsole folgendes probiert:

    Code (Text):
    java -jar test.jar
    liefert

    1. Eclipse JAR:

    Code (Text):
    Exception in thread "main" java.lang.NoClassDefFoundError: D:\java-programme\eclipse\AufstellungsAssistent\bin\AufstellungsAssistent/class
    Caused by: java.lang.ClassNotFoundException: D:\java-programme\eclipse\Aufstellu
    ngsAssistent\bin\AufstellungsAssistent.class
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
    Could not find the main class: D:\java-programme\eclipse\AufstellungsAssistent\bin\AufstellungsAssistent.class. Program will exit.

    2. JBuilder JAR

    Code (Text):
    jar:file:/D:/Java_Programme/AufstellungsAssistent/AufstellungsAssistent/Aufstell
    ungsAssistent.jar!/feld.png
    null
    SaveIcon.png nicht gefunden
    Exception in thread "main" java.lang.NullPointerException
            at javax.swing.ImageIcon.<init>(Unknown Source)
            at aufstellungsassistent.Einstellungen.InitButton(Einstellungen.java:114
    )
            at aufstellungsassistent.Einstellungen.<init>(Einstellungen.java:68)
            at aufstellungsassistent.Fenster.<init>(Fenster.java:29)
            at aufstellungsassistent.AufstellungsAssistent.main(AufstellungsAssisten
    t.java:28)
     
  25. Kostenlose Java-Grundlagen DVD im Wert von 29,95 € heute kostenlos sichern (Klick)
Die Seite wird geladen...

SourceCode + Bilder in EIN Jar File packen - Ähnliche Themen

Forum Datum
Aktuellen Sourcecode aus Browser laden Allgemeine Java-Themen 22. Mai 2016
OpenDolphin SourceCode AWT, Swing, JavaFX & SWT 19. Apr. 2015
Android-Lib: Sourcecode Generator mittels Annotation Processing Java Basics - Anfänger-Themen 31. Dez. 2014
Jaspersoft Sourcecode? Softwareentwicklung 9. Okt. 2014
Magie in Java SourceCode Java Basics - Anfänger-Themen 12. Juni 2014
Interessante Stellenangebote


Weitere Stellenanzeigen

Stellenanzeige Mediadaten