Jar Datei ist ausführbar aber zeigt keine icon's an

Status
Nicht offen für weitere Antworten.
C

Coca

Gast
Halli hallo und frohes neues erstmal
Ich habe folgendes Problem, ich habe ein kleines Projekt erstellt und es funktioniert auch soweit. Mein Problem ist wenn ich das projekt zu einer Jar File hinufüge, und dann starte funktioniert alles nur werden mir die Icons auf dem JLabel nicht angezeigt. Ich denke es liegt am Datei Pfad. Habe hier auch schon viele Threads gefunden zu dem Thema. ich google mindest auch schon 2 Stunde und stoße immer wieder auf getClass().getResource aber ich verstehe es überhaupt nicht.
So habe es dann endlich hin bekommen das es in eclipse mit getClass().getResource ging, aber dann startete die anwendung als jar überhaupt nicht mehr :S
wenn ich es so ausführe
Code:
movingLabel.setIcon(new ImageIcon ("img/movement1.jpg"));
klappt es in eclipse wunderbar aber in der jar sehe ich die bilder nicht. und wenn ich es so ausfuehre
Code:
ImageIcon pic = new ImageIcon(getClass().getResource("/img/movement1.jpg"));
und bei setIcon dann pic angebe klappt es wieder in Eclipse, aber startet dafür die jar garnicht mehr ich weiß nicht mehr weiter ???:L
Danke für die Hilfe
 

Verjigorm

Top Contributor
ich glaube nur getResource() reicht da nicht.
getResourceAsStream(String name) musste in der Jar benutzen
 

The_S

Top Contributor
getResource sollte reichen und ist auch der richtige Weg um Bilder/Dateien aus einem JAR zu laden.

Wenn dein JAR nicht mehr startet, muss es wohl zu einer Fehlermeldung kommen. Führe dein JAR doch mal über die Konsole aus, und zeige uns die entsprechende Fehlermeldung.
 
C

coca

Gast
also wenn ichs über java -jar test.jar starte dann gibt mir die cmd folgende aus gabe :
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unkown Source)
at test.Spieler.<init>(Soieler.java:6)
at test.MoveLabelFrame.<init>(MoveLabelFrame.java:16)
at test.MoveLabelMain.main(MoveLabelMain.java:5)
was mir das sagt, das die Pfade falsch angegeben sein müssen. jetzt frage ich micht warum es dann in Eclipse funtzt. Oder liegt das daran das die bilder fehlen? oder vll sollte ich selber eine Manifest.txt schreiben und nicht von eclipse erstellen lassen
Vielen Dank schon mal für die Antworten
 
C

Coca

Gast
Schade dass ich meine Antowrt nicht editieren kann, aber ein kleiner nachtrag:
Ich exportiere das Project mit Eclipse und folgenden Einstellungen
Export generated class files and resources
Export java source files and resources
compress the contents of the JAR file
add directory entires
overwrite existing files without warning
Export class files with compile errors
Export classes files with compile warnings
Gernerate the manifest file
Save the manifest in the workspace
Manifest file /swing/Manifest.txt
Seal contents:Seal some packages
Select the class of application entry point: Main class:MoveLabelMain
 

Verjigorm

Top Contributor
das nutzt dir aber nix, wenn der Ordner/Files nicht angehakt sind im Eclipse
das hatte ich auch schonmal, deswegen kontrollier ich immer alle Häkchen!
Bei : "Select the Resources to Export"
 
C

coca

Gast
Da werden mir aber die img nicht angezeigt, also kann ich da auch keine harken machen. Wie kann ich das einstellen, das Eclipse erkennt, dass im ProjektOrder Swing ein unterordner img mit zwei bild exestiert?
neben bei, wenn das
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
bei classpath steht und ich will jetzt auf das bild movement zugreifen, das im ordner img liegt und dieser direkt im projekt swing liegt?
dann ist doch
Code:
ImageIcon pic1 = new ImageIcon(getClass().getResource("./img/movement1.jpg"));
richtig? also in eclipse zeigt er es mir so an
 

Verjigorm

Top Contributor
wenn du auf Export -> Jar gehst, kriegste doch oben in 2 Fenstern alle Projekte/Packages etc angezeigt.
Da klickste auf das + für deinem Projekt, dann siehste alle Unterordner, auch deinen "img"-Ordner.
da muss ein Häkchen davor sein
 
C

Coca

Gast
vll habe ich mich dumm ausgedrückt, aber genau den sehe ich nicht
 

Lulumann6

Aktives Mitglied
also ich kann dir mit dem export und eclipse nicht weiterhelfen,
aber ich hatte heute genau das selbe problem wie du, die bilder wurden einfach nicht angezeigt.
1. eclipse scheint die bilder auch zu finden wenn man den dateinamen klein schreibt obwohl er eigentlich groß geschrieben werden muss. wenn du dann eine jar machst musst du umbedingt auf die groß- und kleinschreibung achten.
2. die endung muss aufjedenfall auch entweder groß oder klein geschrieben werden, also PNG muss groß und gif klein (bei jpg weis ich das nicht).


mfg. Lulumann
 

The_S

Top Contributor
Das liegt daran, dass du in Eclipse auf das Windows-Filesystem zugreifst und selbiges nicht Case-Sensetive ist. Eine JAR ist in sich so ne Art Mini-Filesystem (wenn ich das mal so nennen darf), da gepackt und nur eine Datei. Und hier ist wieder alles Case-Sensetive.

@Coca schau doch einfach ins jar, ob da die bilder drin liegen oder nicht ???:L
 

lhein

Top Contributor
Verjigorm hat gesagt.:
mit winrar z.b. kannste dir die Jar anschauen
(Achtung mit permanenten Verknüpfungen von winrar zu jar ;) )

Du kannst das JAR auch im Winzip öffnen oder benenn es halt um in *.zip.

lr
 

The_S

Top Contributor
Du kannst auch ein Java-Programm schreiben, dass dein JAR nach deinen Bildern durchsucht - definitiv die stylischste Lösung :cool:
 
J

Java-dev

Gast
Probiers mit :

Image icontitle = Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("ressourcepfad/icon.png"));
setIconImage(icontitle);


Gruß

CW
 

Dozor

Mitglied
Hi Coca

sag mal hatt es jetzt bei dir funktioniert oder nicht?

Bei dateien in Java Archiven(Jar) ist das sogenannte "Filesystem"Case sensitive,
=> Java unter Windows ist sogesehen bei der ausführung egal ob es klein oder groß geschrieben ist währe da nicht dieser kleine punkt der sich groß auswirkt die Plattform unabhängigkeit.

Das hat zufolge das Jar Dateien ebenfalls Plattform unabhängig sein sollen , DIE SIE AUCH SIND deswegen beziehen sie ihr "Filesystem" auf den "kleinsten gemeinsamen Nenner" aller Betriebsysteme und das ist in diesem fall die Groß und klein schreibung
=> Wird ein Programm aus einer Jar gestartet und greift auf die Sourcen im Jar File zurück ist auf jedenfall CASE SENSITIVE angesagt.

Desweiteren weiß ich jetzt natürlich nicht wie genau deine Projektstruktur / Ordnersystem aussieht aber ich empfehle dir eine Classe anzulegen womit du auf die Bilder zugreifst
und die am besten einen Ordner vor den Tatsächlichen Bildern liegt.

Desweiteren habe ich bei meinen versuchen festgestellt das ein URL Objekt in einer Jar nichts mit Pfad angaben anfangen kann die ./ oder ../ beinhalten

zweiter beitrag folgt zugleich
 

Dozor

Mitglied
Dozor hat gesagt.:
Desweiteren habe ich bei meinen versuchen festgestellt das ein URL Objekt in einer Jar nichts mit Pfadangaben anfangen kann die ./ oder ../ beinhalten

Zweiter Beitrag:

und die all erwähnten forgehen
Java-dev hat gesagt.:
Image icontitle = Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("ressourcepfad/icon.png"));
setIconImage(icontitle);
Coca hat gesagt.:
new ImageIcon(getClass().getResource("img/movement1.jpg"));

Code:
    ClassName.class.getResource("img/mevement1.jpg");

alle diese drei forgehensweisen bringen ein URL Objekt zurück

an diesen Drei ist nichts auszuzusetzen.

nun zu der Tatsache:
hast du deine Bilder in einem einfachen "Folder" wie es in Eclipse heißt unterlegt
oder liegen bei dir die Bilder in einem "Package"

Nun zu meiner Lösung:

Ich geh jetzt mal von der tatsache aus das Sie im Package liegen
(so hatte ich es meistens und meine Methode die Bilder dann zu laden hat immer in einer Jar datei funktioniert
desweiteren erwähne ich das in meinem Projekt der alle Packages als erste Kommponente gleich waren
zb. de
de.bilder
de.home.gui
de.home.caller
de.logic ect....)

nun hatte ich mir eine Classe im aller ersten Package ( de ) geschrieben

meine einfach kleine Classe :
Code:
package de;

import java.net.URL;
import javax.swing.ImageIcon;

public class ImageLoadManager {
	private ImageLoadManager(){

	}

	public static ImageIcon loadImage(String path) {
		ImageIcon icon;

		URL fis = ImageLoadManager.class.getResource(path);
		System.out.println(fis);
		// Abfragen auf Null ... vermeidung des Fehlers NullPointerException die bei
		// icon = new ImageIcon(fis); geben würde  wenn hier fis Null wäre
		if (fis != null) {
			icon = new ImageIcon(fis);
			return icon;
		} else {
			return null;
		}
	}
}

Diese Classe ist eine "statische" Classe und damit sogesehen nicht über einen Konstruktur initialisierbar
hatt eine Methode namens loadImage(String path)
wobei mit Path nicht nur der Pfad gemeint ist sondern auch der name des Bildes/ der Datei
fürs anpassen müsst ihr sogehen nur den Return Wert anpassen müsst.


desweiteren kannst du nun auf alle Bilder zugreifen die in Packages nach "de" liegen
sowäre ein guter Aufruf aus ner anderen Classe wie folgt
hierbei ist immer noch auf Groß und klein schreibung zu achten

Bitte beachten dass bei dem parameter path der weg zum bild vom package de beschrieben werden muss

Code:
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("hans.jpg"));    // Bild liegt im Package de
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("bilder/hans.jpg"));    // Bild liegt im Package de.bilder
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("home/hans.jpg"));    // Bild liegt im Package de.home
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("home/gui/hans.jpg"));    // Bild liegt im Package de.home.gui
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("home/caller/hans.jpg"));    // Bild liegt im Package de.home.caller
    ImageIcon meinIcon = new ImageIcon(ImageLoadManager.loadManager("logic/hans.jpg"));    // Bild liegt im Package de.logic

Also gibt mir bitte feedback ob es bei euch so funktioniert.

und wie ihr die Lösung findet.

Hoffe euch allen Geholfen zu haben

Dozor :( :roll: :) :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
MasterCaution Swing .jar Datei ausführen AWT, Swing, JavaFX & SWT 12
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
L Csv-Datei einlesen AWT, Swing, JavaFX & SWT 34
J *.jar öffnet PDF-Datei nicht AWT, Swing, JavaFX & SWT 35
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
F Pfad von eingelesener Datei AWT, Swing, JavaFX & SWT 10
Crazynet xls Datei in JTable AWT, Swing, JavaFX & SWT 3
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
B ST Datei einlesen AWT, Swing, JavaFX & SWT 1
D JavaFX Jar Datei Signieren mit Java 8u45 AWT, Swing, JavaFX & SWT 2
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
H 2D-Grafik .EPS Datei in .PNG konvertieren AWT, Swing, JavaFX & SWT 1
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
B JAVAFX und CSS Datei in Eclipse AWT, Swing, JavaFX & SWT 4
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Datei in jar öffnen AWT, Swing, JavaFX & SWT 11
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
P Neue Datei erstellen in JPanel AWT, Swing, JavaFX & SWT 5
N Speicherpfad für Datei auswählen AWT, Swing, JavaFX & SWT 2
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
M Swing XML Datei in JTable darstellen + verändern AWT, Swing, JavaFX & SWT 3
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
N Swing TreePath Datei öffnen AWT, Swing, JavaFX & SWT 7
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
T Info Datei AWT, Swing, JavaFX & SWT 3
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
W jar Datei öffnen AWT, Swing, JavaFX & SWT 4
W TrayIcon mit jdic (Problem bei .jar Datei) AWT, Swing, JavaFX & SWT 3
D Nodes eines statischen JTrees sollen auf Anker (Textmarken) in einer HTML-Datei zeigen AWT, Swing, JavaFX & SWT 8
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
M AWT Datei auf server speichern und beschreiben AWT, Swing, JavaFX & SWT 7
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
M Text in txt-Datei in letzte Zeile schreiben? AWT, Swing, JavaFX & SWT 14
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
E Datei in TextArea anzeigen AWT, Swing, JavaFX & SWT 12
data89 Nimbus Look and Feel als gepackte JAR-Datei AWT, Swing, JavaFX & SWT 3
S Auswahlfenster: Datei beim Doppelklick öffnen AWT, Swing, JavaFX & SWT 8
N Swing Hintergrund Bild in JAR Datei AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
M Text-Datei in einem JFrame öffen? AWT, Swing, JavaFX & SWT 2
Fadi Images in JAR Datei laden? AWT, Swing, JavaFX & SWT 5
K Hyperlink als Datei identifizieren AWT, Swing, JavaFX & SWT 2
S Jar-Datei funktioniert nicht richtig AWT, Swing, JavaFX & SWT 3
1 Laden einer Datei zur Echtzeit Darstellen AWT, Swing, JavaFX & SWT 7
P Problem bei Datei zur Verwaltung von Tabs AWT, Swing, JavaFX & SWT 5
F png-Datei erstellen und einzelne Pixel schreiben AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben