exportierte *.jar funktioniert nicht

Daxten

Mitglied
Hi Leute!
Ich denke viele von euch sind das Thema mit der exportierten *.jar satt, da scheinbar ja viele damit Probleme haben und sich nicht richtig informieren. Ich bin der Meinung dass das bei mir nicht der Fall ist und deswegen packe ich mein Problem mal hier rein.
Mein Programm lässt sich unter Eclipse starten und funktioniert einwandfrei ohne Exceptions oder Problems. Das ganze Programm soll ein Aquarium (für die Uni) darstellen und hat eine GUI in swing, das ganze ohne GUI Builder, ich habe also einen guten Überblick über den Code.
Habe versucht das Programm mit Hilfe von Export->Jar, Export->Runnable Jar File und Build fat Jar zu exportieren, jedoch hatte ich jedesmal das selbe Problem.

so sieht es aus wenn ich es in Eclipse starte -> Imageshack - eclipsestart.png
(Tolle Grafiken oder? ;))
so sieht es aus wenn ich es exportiere und per cmd starte -> Imageshack - cmdstart.png

Kennt jemand das Problem und kann mir helfen?
 

XHelp

Top Contributor
Hm... kann es sein, dass du irgendwo die Datei mit einem File-Objekt ausließt? Oder greifst du auf die Propertie "user.dir" zu?
Sieht nämlich so aus, als ob er die Datei einfach nicht finden.
Es wäre übrigens hilfreich die jar aus einer Konsole zu starten, dann bekommst du die Exceptions angezeigt.

[EDIT]Ok, sehe gerade, dass du es bereits aus der Konsole laufen hast... hmm... kann es sein, dass du solche Scherze wie leere catch-Blöcke hast?[/EDIT]
 
Zuletzt bearbeitet:

Daxten

Mitglied
Hm... kann es sein, dass du irgendwo die Datei mit einem File-Objekt ausließt? Oder greifst du auf die Propertie "user.dir" zu?
Sieht nämlich so aus, als ob er die Datei einfach nicht finden.
Es wäre übrigens hilfreich die jar aus einer Konsole zu starten, dann bekommst du die Exceptions angezeigt.

[EDIT]Ok, sehe gerade, dass du es bereits aus der Konsole laufen hast... hmm... kann es sein, dass du solche Scherze wie leere catch-Blöcke hast?[/EDIT]

Nein habe ich nicht :/
Habe gerade nochmal rumprobiert, er findet ganz einfach die Grafiken nicht.. die befinden sich aber eigentlich in der Jar.

Jar File
-> META-INF
-> gfx (hier befinden sich die Grafiken
-> infpp
-> -> oceanLife (hier befinden sich die class files)

Die Grafiken lade ich mithilfe von
img = Toolkit.getDefaultToolkit().getImage("gfx/background.PNG");

z.B.
 

XHelp

Top Contributor
Vllt hilft sowas wie:
Code:
Toolkit.getDefaultToolkit().getImage(getClass().getResource("deinpfad"));
bzw.
Code:
getClass().getClassLoader().getResource("deinpfad")
 

Daxten

Mitglied
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
 

jgh

Top Contributor
Du benutzt doch irgendwelche Bilder in der GUI?
Die werden nicht automatisch in das "JAR-File" gepackt, sondern du musst händisch bspw. deine Ordner "pics", oder die entsprechenden Bilder-Files exportieren!
Natürlich müssen die "File-Verweise" im Source-Code auch korrekt gesetzt sein.

Deine Fehlermeldungen weisen auf alle Fälle darauf hin, dass er die Bilder nicht findet.
Sonst poste doch mal deine Projektstruktur in eclipse und die Struktur in deinem exportierten Projekt...falls es immer noch nicht klappen sollte!

Edit:
also in der Ebene in der du das JAR-File ausführst, befindet sich ein Ordner der "gfx" heißt und in dem es eine Datei die background.PNG heißt?
 
Zuletzt bearbeitet:

hansmueller

Bekanntes Mitglied
Hallo,

wenn du ein Java-Programm über die Konsole startest, solltest du nicht den Befehl "javaw -jar" verwenden, sondern "java -jar". Bei "javaw" gibt es nämlich keine Ausgabe auf der Konsole.

MfG
hansmueller
 

Daxten

Mitglied
Du benutzt doch irgendwelche Bilder in der GUI?
Die werden nicht automatisch in das "JAR-File" gepackt, sondern du musst händisch bspw. deine Ordner "pics", oder die entsprechenden Bilder-Files exportieren!
Natürlich müssen die "File-Verweise" im Source-Code auch korrekt gesetzt sein.

Deine Fehlermeldungen weisen auf alle Fälle darauf hin, dass er die Bilder nicht findet.
Sonst poste doch mal deine Projektstruktur in eclipse und die Struktur in deinem exportierten Projekt...falls es immer noch nicht klappen sollte!

Edit:
also in der Ebene in der du das JAR-File ausführst, befindet sich ein Ordner der "gfx" heißt und in dem es eine Datei die background.PNG heißt?

richtig :)
habs auch über java -jar gestartet, da kommt auch keine Fehlermeldung! Die Fehlermeldung die ich weiter oben geposted habe war mit den alternativ Befehlen in Eclipse, wo es vorher ja eigtl funktioniert hat..
Ich bin mit meinem Latein echt am Ende : / Normalerweise finde ich mittels rumprobieren jedenfalls heraus woran es liegt, aber er gibt ja nicht einmal Fehlermeldungen heraus OBWOHL ich alless in try / catch Blöcken habe.. (wirft Toolkit.getDefaultToolkit().getImage("gfx/background.PNG"); überhaubt Exceptions?)
 
Zuletzt bearbeitet:

Daxten

Mitglied
Habs nu nochmal mit ImageIO probiert.. da wirft er jedenfalls raus das er die Datei nicht findet :)
Hier der Code und Ordner Struktur

Manifest
Manifest-Version: 1.0
Main-Class: infpp.oceanlife.mainClass

Ordner Struktur
Jar File
- META-INF
- infpp
- - oceanLife (hier drin die class dateien)
- gfx (hier drin die gfx, und ja die sind wirklich da drin!)
- doc

[Java]
File file = new File("gfx/background.png");
try {
img = ImageIO.read(file);
g2d.drawImage(img, 0, 0, size.width, size.height, 0, 0, img.getWidth(null), img.getHeight(null), null); // Background
} catch (IOException e1) {
e1.printStackTrace();
}
[/Java]


EDIT:
Das Problem hat wohl was mit relativen Pfadangaben in *.jars zu tun.. hat jemand ne Idee? :shock:
 
Zuletzt bearbeitet:

jgh

Top Contributor
Ordner Struktur
Jar File
- META-INF
- infpp
- - oceanLife (hier drin die class dateien)
- gfx (hier drin die gfx, und ja die sind wirklich da drin!)
- doc

EDIT:
Das Problem hat wohl was mit relativen Pfadangaben in *.jars zu tun.. hat jemand ne Idee? :shock:

Das ist die Ordner-Struktur in deinem JAR-File?
wenn ja, dann kopiere einfach deinen Ordner(gfx) in dasgleiche(dasselbe^^) Verzeichnis, wo dein JAR-File liegt.
 

slawaweis

Bekanntes Mitglied
das Nachladen der Ressourcen in Java-Programme kann man über zwei Wege machen. Entweder die Ressourcen relativ zu der JAR-Datei ablegen oder in die JAR-Datei setzen. Relative Ressourcen lassen sich ganz normal über java.io.File finden und laden. Ressourcen in der JAR-Datei werden über den getClass().getResourceAsStream(dateiname) geladen.

Die Pfadangabe in JARs ist immer relativ zu dem Klassenname. Haben wir z.B. eine Klasse "a.b.c.Delta" und wollen dort "image01.png" laden:

Java:
new Delta().getClass().getResourceAsStream("image01.png")

muss die Ressource bei "/a/b/c/image01.png" in der JAR liegen. Wenn wir so aufrufen:

Java:
new Delta().getClass().getResourceAsStream("images/image01.png")

muss die Ressource bei "/a/b/c/images/image01.png" in der JAR liegen. Wenn wir aber so aufrufen:

Java:
new Delta().getClass().getResourceAsStream("/images/image01.png")

muss die Ressource bei "/images/image01.png" in der JAR liegen, also relativ zum Root. Der kleine Unterschied ist das "/" am Anfang. Das signalisiert, dass die Ressource ausgehend vom Root-Verzeichnis zu finden ist. Ohne das "/" wird relativ zu der Klasse gesucht.

Man muss noch eine Sache beachten. Damit "getResourceAsStream" auch in Eclipse während der Entwicklung funktioniert, muss man den Ressourcen-Ordner als Quelltext-Ordner markieren, analog zu "src". Dann wird der Inhalt dieser Quelltext-Ordner immer in den "bin" Ordner von Eclipse automatisch kopiert. D.h. man legt sich einen Ordner "res" als Quelltext-Ordner an. Da hinein verschiebt man seine Ressourcen (welche auch ins JAR kommen), wie z.B. den "gfx" Ordner. Dann sollte "gfx" automatisch auch in "bin" als Kopie auftauchen und man kann mit "getResourceAsStream" arbeiten.

Slawa
 
Zuletzt bearbeitet:

Daxten

Mitglied
Super! Vielen dank das hat geholfen!
Lade die Daten nun über ->
img = getToolkit().getImage(getClass().getResource("/gfx/background.png"));

und es funktioniert einwandfrei!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
P Exportierte jar Datei stürzt ab Java Basics - Anfänger-Themen 2
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
M Frage, wie dieser Code funktioniert, bzw. weshab er bei mir nicht funktioniert Java Basics - Anfänger-Themen 4
L Level Reset funktioniert nicht Java Basics - Anfänger-Themen 3
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben