Fragen zu JAR mit Bildern

Status
Nicht offen für weitere Antworten.

Blurry

Mitglied
Hoi,

ja, ich hab die FAQ zu JARs usw. gelesen. Trotzdem hänge ich an einer wohl ziemlich einfachen Sache fest. ich hab folgendes kleines Testprogramm, mit dessen Hilfe ich versuche, diesen Kram zu verstehen:

Code:
public class Bildertest
{
	public static void main(String[] args)
	{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    ImageIcon icon1 = new ImageIcon( Bildertest.class.getResource( "Bilder/testbild.gif" ) );
    JLabel l1 = new JLabel( icon1 );
    frame.add( l1, BorderLayout.LINE_START );

    frame.pack();
    frame.setVisible( true );
	}
}


Das Verzeichnis "Bilder", in dem das Beispielbild liegt, befindet sich im selben Ordner wie nach der Kompilierung die .class-Datei. Funktioniert auch, das Bild wird in einem JFrame angezeigt. Die erste, allerdings zweitrangige, Frage, die ich mir stelle, ist, wie ich den Standard-JAR-Export-Assistenten von Eclipse dazu überreden kann, das Bild mit ins JAR zu packen. Tut er bisher nämlich nicht, im Gegensatz zum Fat-Jar-Plugin.

Die hauptsächliche Frage, die ich mir stelle, ist jedoch die folgende: Angenommen, das Bild liegt so:

Code:
bin
  klassen
    blabla
      [.class-Files]
src
  klassen
    blabla
      [.java-Files]
Bilder
  testbild.gif

Wie greife ich dann darauf zu, ohne einen absoluten Pfad zu verwenden? Das Ding muss später ja auch innerhalb des JARs referenziert werden. Darum geht es hauptsächlich. Die Verwendung von ".." im Pfadnamen schlägt fehl, und mehr fällt mir echt nicht ein...
 

Campino

Top Contributor
WEnn das Bild nicht in der selben JAR bzw. Im classpath des Projekts liegt, kann es nicht über den Classloader geladen werden. Das Bild muss unter Eclipse also mit in den Bin. Ansonsten musst du ImageIO verwenden.
 

Blurry

Mitglied
Campino hat gesagt.:
WEnn das Bild nicht in der selben JAR bzw. Im classpath des Projekts liegt, kann es nicht über den Classloader geladen werden. Das Bild muss unter Eclipse also mit in den Bin. Ansonsten musst du ImageIO verwenden.

Das Bild liegt ja mit im selben JAR. Oben erwähnte Dateistruktur ist die des JARs. Öffnet man das JAR mit einem Zip-Programm, sieht man also diese drei Ordner:

bin
src (oder auch nicht, ist ja wurscht)
Bilder


Es muss doch möglich sein, dann sozusagen aus "bin" heraus auf den Bilder-Ordner zuzugreifen. Ich habe hier den Quellcode eines ziemlich großen Projekts, in dem das mit der Ordnerstruktur genauso gemacht wurde. Ich krieg das Ding in Eclipse zwar kompiliert, aber es semmelt dann sowohl aus Eclipse als auch aus einem JAR heraus jedes Mal mit 'ner NullPointerException ab - Bild nicht gefunden... Das fertige, funzende JAR habe ich ebenfalls hier. Da sind die Bilder in 'nem Unterverzeichnis des "Roots" und die .class-Files sonst wo verstreut - und das läuft.

Im für das fertige JAR verwendeten Code wird so vorgegangen:

Code:
logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("pics/logos/logo.gif")));


Innerhalb des JARs sieht's so aus:

Code:
ressourcen
  pics
    logos
      logo.gif hier
bin
  bla
    bla
      Logos aufrufende Klasse hier

Ich kapier nicht, wieso das in der vorkompilierten Fassung geht, zumal bei "getResource" ja noch nicht mal das Oberverzeichnis "ressourcen" angegeben ist. Aber selbst dann dürfte das scheitern, da auf diese Art und Weise im Unterverzeichnis "pics" der aufrufenden .class-Datei nachgesehen wird - das es natürlich nicht gibt.
 

AlArenal

Top Contributor
Und was soll der Krempel in deinem JAR?

Da gehört nur der Inhalt des bin-Ordners rein, d.h. die Package-Struktur mit den enthaltenen class-Dateien und Ressourcen.
 

Blurry

Mitglied
AlArenal hat gesagt.:
Und was soll der Krempel in deinem JAR?

Da gehört nur der Inhalt des bin-Ordners rein, d.h. die Package-Struktur mit den enthaltenen class-Dateien und Ressourcen.

Ich muss aber leider mit dem zurechtkommen, was mir so gegeben wurde. Ehrlich gesagt weiß ich auch gar nicht, was du meinst: die überflüssigen Quelldateien? Dass die normalerweise nicht da reinmüssen, ist mir klar und habe ich oben ja auch schon angedeutet. Ob sie nun da sind oder nicht, spielt ja auch gar keine Rolle. Ich komme der Lösung des Problems übrigens langsam näher. Wie ich festgestellt habe, ist der Pfad in dem fertig gepackten JAR, das ich bekommen habe, anders als in dem Eclipse-Projekt. Das heißt, irgendwie haben die Herren das gleich beim Kompilieren so packen lassen, dass es passte - so weit ich das sehe, mit 'nem Ant-Skript, wovon ich nebenbei bemerkt überhaupt keinen Plan habe. Macht aber auch nichts, inzwischen habe ich immerhin Grundlegendes gecheckt:

Referenziert man eine Ressource mit /Ordner/bla.gif, dann wird von oberster Verzeichnisebene im JAR an geguckt. Lässt man den führenden Slash weg, einfach unterhalb der aufrufenden .class-Datei. Äh, ja, trivial? Mehr wollte ich eigentlich nicht mal wissen, von dem sich jetzt auch aufgeklärt habenden Kuriosum mit den vermeintlich völlig verkehrten und dann trotzdem funktionierenden Pfadangaben im mir an die Hand gegebenen Quellcode abgesehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5
B fragen zur for-schleife und arrays Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben