Bilder werden in App mit Jar-Datei nicht angezeigt

Womue18

Mitglied
Hallo,
ich habe auf meinem Mac mit Netbeans mehrer Java-Programme mit integrierter Derby-Datenbank geschrieben und in App's eingebunden (s. Bild).
Im Programm werden beim Aufrufen von Datensätzen die jeweils zugehörigen, außerhalb der Datenbank abgelegte Bilder angezeigt.
Das hat bisher einwandfrei geklappt.
Nach einem Update meines Rechners auf 'Catalina' laufen die Programme nach Start durch die App's zwar wie bisher, nur werden nun die Bilder nicht mehr angezeigt.
Teste ich die Programme in Netbeans oder starte ich sie nach dem Öffnen des Paketinhalts der App über den 'launcher', werden die Bilder wieder angezeigt.
Ich vermute, es könnte an der Datei 'info.plist' liegen.
Da ich Laie bin und mir das Erstellen der App's, 'info.plist' und 'launcher' aus dem Internet zusammengesucht habe und somit ihre genaue Funktion nicht kenne, finde ich keine Lösung wie die Bilder wieder angezeigt werden können.

Kann mir hier jemand helfen?
 

Anhänge

  • App-Aufbau.png
    App-Aufbau.png
    22,6 KB · Aufrufe: 5
  • Foto info.plist.png
    Foto info.plist.png
    66,3 KB · Aufrufe: 9
  • Foto launcher.png
    Foto launcher.png
    82,9 KB · Aufrufe: 8

Neumi5694

Top Contributor
1. Poste doch mal die Zeilen des Codes, wo so ein Bild eingelesen wird.
2. Lass vor so einer Zeile mal den Pfad eines Bildes in der Konsole ausgeben und poste auch, was dort steht.

ps: Hast du schon Clean&Build ausgeführt? Manchmal müssen die Jar-Dateien von Grund auf neu erstellt werden, wenn man Resourcen ändert.
 

Womue18

Mitglied
Hallo Neumi5694,
ich weiß leider nicht was Clean&Build ist. Ich lasse das Programm jedoch nach jeder Änderung unter Netbeans neu bereinigen und erstellen und stelle dann jeweils die neueste Jar-Datei in die App ein.
Bevor ich 'Catalina' installiert hatte wurden die Bilder nach starten der App ja angezeigt. Ich vermute es liegt am Aufbau der App der für 'Catalina' nicht richtig ist.
Im Anhang nun wie gewünscht Bilder vom Code und Ausdruck des Pfades
 

Anhänge

  • Ausdruck Pfad.png
    Ausdruck Pfad.png
    37,4 KB · Aufrufe: 4
  • Bild anzeigen.png
    Bild anzeigen.png
    38,9 KB · Aufrufe: 5

Neumi5694

Top Contributor
Netbeans, rechte Maustaste auf Projekt. Dritter Punkt von oben.
Der Pfad ist ... seltsam. Wenn ich mir den anschue, würde ich vermuten, dass das Bild in deinem Home-Verzeichnis liegen soll, was ich aber nicht glaube, da zumindest unter Windows "/Users/name" nicht auf dein Home-Verzeichnis verweist und unter Linux würde es auch nicht passen. Da es in Netbeans so funktioniert, nehme ich an, es handelt sich um ein Unterverzeichnis deiner Resourcen.

Aber der springende Punkt ist ein anderer: Falls - so wie ich das verstanden habe - das Bild sich innerhalb einer Jar befindet, dann musst du Java auch sagen, dass dem so ist.
[CODE lang="java" title="getResource"]InputStream in = getClass().getResourceAsStream("/User/[...]/file.txt")[/CODE]
Daraus kannst du es dann einlesen.
 

Womue18

Mitglied
Alle Bilder liegen außerhalb des Java-Programms in den Pfaden wo die Cad-Datein für die Bauteile liegen.. Sie werden zur Laufzeit jeweils in ein jLabel-Feld geladen wenn das entsprechende Bauteil angezeigt wird.

Übrigens werden auch Pdf-Dateien die separat abgelegt sind zunächst nicht angezeigt und es kommt eine Fehlermeldung (s. Bild). Auch wenn der Hinweis in der Meldung durchgeführt wurde wird die Pdf-Datei nicht angezeigt. Erst wenn ich die Datei dann in der Vorschau geöffnet habe läßt sie sich aus dem Programm heraus öffnen und zwar immer.
Beide Probleme müssen damit zu tun haben, dass sich in 'Catalina' etwas im Behandeln von APP's geändert hat
 

Anhänge

  • Fehlermeldung.png
    Fehlermeldung.png
    36,4 KB · Aufrufe: 3

Neumi5694

Top Contributor
Was mir an den Pfaden nicht gefällt, ist vor allem, dass das Home-Verzeichnis hardcodiert hinterlegt ist.
Ohne es direkt im Code zu hinterlegen, kriegst du dein User-Verzeichnis so:
Java:
System.getProperty("user.home");

So kannst du anzeigen lassen, wie der tatsächliche Dateiname lautet, wenn du sie öffnen willst
Code:
new File(bild).getAbsolutePath()

Hiermit kannst du prüfen, ob die einzulesende Datei existiert
Java:
new File(bild).exists()

und damit, ob du sie einlesen darfst (Rechteprobleme hast du ja schon angesprochen)
Java:
new File(bild).canRead()

Es mag sein, dass alles an den Rechten liegt, die dein Java JRE hat.
Mir ist aufgefallen, dass deine Ausgabe von der IDE stammte. Vor allem, wenn du die Rechte prüfst, solltest du die Ausgabe betrachten, die beim Starten der Jar erzeugt wird.
 

Womue18

Mitglied
Zunächst besten Dank für die Bemühungen.
Die App mit Jar-Datei und der Derby-Datenbank liegt im Verzeichnis 'Programme'. Alle Bilder liegen in unterschiedlichen Pfaden jeweils bei den Konstruktionen der Bauteile. In der Datenbank sind daher für jedes Bauteil nicht die Bilder sondern nur die Dateipfade und Bildnamen abgespeichert, die sich aus verschiedenen Informationen der Bauteile zusammensetzen.
Beim Scrollen durch die Bauteile ändern sich also ständig Pfad und Bildname. Dadurch kann ich m.E. den Pfad nicht abfragen, sondern muß dem Programm sagen in welchem Pfad das Bild liegt und wie es heißt.
Beim Testen in Netbeans und beim Starten des Programms über den Launcher in der APP werden die Bilder ja angezeigt.
Starte ich die APP oder Jar-Datei direkt kommen keine Bilder.
Lösche ichdie Datei 'launcher' aus der App, startet das Programm nicht und es gibt die Fehlermeldung dass das Programm nicht geöffnet werden kann.
Das Löschen der 'info.plist'-Datei aus der APP hat bei mir keinen Einfluß auf die Ausführung des Programms gezeigt.

Ich habe versucht die Vorschläge im Programm einzubauen; leider auch ohne Erfolg.
 

Neumi5694

Top Contributor
Das waren keine Vorschläge für die Lösung, sondern um draufzukommen, was überhaupt das Problem ist.
Wenn die Pfade richtig sind (File.exists()), dann solltest du beim direkten Starten mal prüfen, ob du Zugriffsrechte darauf hast (File.canRead()).
 

Womue18

Mitglied
Es ist nicht bei jedem Bauteil in Bild vorhanden.
Ich habe daher die Routine 'BildAnzeigen' noch einmal geändert und frage nun ab, ob das File gelesen werden kann und lade dann das ImageIkon und einen entsprechenden Text in das jLabelBild.
Das funktioniert in Netbeans und beim Starten über den launcher in der App.
Beim Starten der App wird der Text richtig angezeigt ( Bild vorhanden -> kein Text ; Bild nicht vorhanden -> Text ).
D.h. ich habe die Zugriffsrechte
Das Bild ( ImageIkon ) erscheint aber nicht.
Es scheint, dass die Umwandlung des Strings 'bild' in ein ImageIkon unter 'Catalina' nicht funktioniert.
 

Anhänge

  • BildAnzeigen.png
    BildAnzeigen.png
    127,1 KB · Aufrufe: 2

Neumi5694

Top Contributor
D.h. ich habe die Zugriffsrechte
Nicht zwingend, nein. Ich weiß nicht, welche JRE für die App verwendet wird und ob die mit dem selben Benutzer läuft wie beim Doppelklick der Jar.

Deshalb wiederhole ich: Lass dir währende der Ausführung der Jar ausgeben, a) welcher Pfad verwendet wird, b) ob die Datei esistiert und c) ob du Zugriffsrechte hast. Konzentrier dich auf den Fall, wo es NICHT funktioniert.
Verwende ein Bauteil, bei dem du weißt, dass das Bild verfügbar ist.

Es scheint, dass die Umwandlung des Strings 'bild' in ein ImageIkon unter 'Catalina' nicht funktioniert.
Ein String wird niemals in ein Bild umgewandelt. Aus dem String wird ein File-Objekt erstellt, darauf ein Stream, der Stream wird eingelesen und in ein Bild umgewandelt.
Deshalb musst du jetzt bitte prüfen, ob während der Laufzeit der Pfad passt, die Datei existiert und du Rechte hast.
 

Womue18

Mitglied

Ich frage jetzt Deinem Vorschlag folgend das Home-Verzeichnis mit 'System.getProperty("user.home") ;' ab.
Die Pfade sind richtig, dieDateien ( png-Bilder ) existieren. Die Bilder werden in Ikon's umgewandelt und die Ikon's im Label angezeigt.
Im Betriebssystem 'Catalina' wird ein Bild wenn es in der Jar liegt im Label angezeigt, wenn es außerhalb liegt nicht.
Es geht wohl um geänderte Zugriffsrechte unter 'Catalina'.
Ich habe das Programm noch einmal auf einem Rechner mit dem Betriebssystem 'Yosemite' laufen lassen. Dort werden alle Bilder angezeigt.
Wie ich die Zugriffsrechte der Jar beim Starten der App prüfen kann weiß ich leider nicht.
Ich habe für die Dateien und Pfade die Informationen abgefragt und habe für alle die Zugriffsrechte für Lesen und Schreiben.
 

Womue18

Mitglied
Die Umwandlung des Bildes in ein File -> BufferdImage -> ImageIkon hat unter Netbeans ebenfalls funktioniert in App allerdings nicht.
Wie das Bild über File -> Stream -> Stream einlesen geht weiß ich leider nicht.
 

Neumi5694

Top Contributor

Wie ich die Zugriffsrechte der Jar beim Starten der App prüfen kann weiß ich leider nicht.
mit file.canRead()
Wenn die Datei vorhanden ist und Rechte vorhanden sind, um sie zu lesen, dann ergibt der Wert true. Du startest die Jar und lässt dir den Wert ausgeben. Ob nun auf die Kommandozeile, in eine Log-Datei oder als Meldungsfenster, ist nicht wichtig.

Wie das Bild über File -> Stream -> Stream einlesen geht weiß ich leider nicht.
Die Methoden machen das schon. Habe dir nur erklärt, was da intern passier. Es wird jedenfalls nie ein String in ein Bild umgewandelt.

Zu "user.home": Gut, das wird dir in Zukunft einigen Ärger ersparen. Wo immer es vermeidbar ist, sollten Systemeigenschaften nicht hardcodiert stehen.
 

Womue18

Mitglied
file.canRead() frage ich seit Deinem ersten Hinweis ab. Die Abfrage ergibt immer ein true. Die Bilder werden trotzdem nicht angezeigt. Der Text dass das File gelesen werden kann wird ebenfalls ausgegeben.
Bisher habe ich mit Netbeans 8.2 gearbeitet.
Wenn ich das Projekt in Netbeans 12.3 öffne kommt eine Fehlermeldung ( s. Anhang ). Damit komme ich aber auch nicht weiter.

Mein Problem ist, dass ich Laie bin.
Ich gebe jetzt auf und starte das Programm über den launcher in der App.

Recht herzlichen Dank für Deine Mühe und die hilfreichen Tipp's die mich in meinen Kenntnissen wieder etwas voran gebracht haben.
 

Neumi5694

Top Contributor
Gut, wusste ich nicht. Du hast dich mit deinen Rückmeldungen immer auf Netbeans oder die App bezogen, nicht auf die Jar.

Im nächsten Schritt hätt ich die Sachen erst mal als Streams einlesen lassen und dann schrittweise weitergemacht.

Wünsche dir auf jeden Fall noch viel Erfolg.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
The Pi NetBeans Bilder in Jar Datei werden nicht angezeigt Allgemeine Java-Themen 7
P Datentypen Bilder werden in ausführbarer JAR nicht angezeigt Allgemeine Java-Themen 6
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
A Beim Kopieren werden Bilder verfälscht Allgemeine Java-Themen 3
H Bilder werden nicht angezeigt Allgemeine Java-Themen 7
G Bilder werden in .Jar nicht angezeigt! Allgemeine Java-Themen 2
E Warum werden Bilder nicht angezeigt? Allgemeine Java-Themen 3
M Bilder-Ordner kann im JAR-File nicht gefunden werden Allgemeine Java-Themen 15
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
B Dateien / Bilder von "webapp" Ordner bekommen? Allgemeine Java-Themen 1
B Java Mail: Unterscheidung bei Attachments und eingefügte Bilder in Email Allgemeine Java-Themen 18
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
J Bilder lassen sich nicht importieren Allgemeine Java-Themen 3
S Bilder/Grafiken (zb: ".jpg") gestaucht zu Anzeige bringen Allgemeine Java-Themen 4
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
L Bilder innerhalb der JAR Datei Allgemeine Java-Themen 2
A 2 Bilder übereinander legen Allgemeine Java-Themen 5
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
OnDemand Bilder herunterladen Allgemeine Java-Themen 11
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
V Input/Output Gif Bilder Animiert aus einer Jar laden Allgemeine Java-Themen 4
F Bilder aus Subpackage entnehmen Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
A JTable Bilder Allgemeine Java-Themen 1
P OpenCV mit Java - Bilder in Graustufenbilder umwandeln Allgemeine Java-Themen 2
M Barcode und Bilder in PCL einbinden Allgemeine Java-Themen 0
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
A Bilder vergleichen auf gleichheit oder ähnlichkeit Allgemeine Java-Themen 8
F Java Api Bilder speichern Allgemeine Java-Themen 3
J Bilder in Eclipse überlappen Allgemeine Java-Themen 4
M Bilder aus Excel auslesen Allgemeine Java-Themen 6
S Bilder Zippen Allgemeine Java-Themen 3
Z Bilder aus JAR laden Allgemeine Java-Themen 2
R Exec. Jar läd Bilder nicht! Allgemeine Java-Themen 5
D auf Bilder im Jar-Archiv zugreifen Allgemeine Java-Themen 11
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
M Input/Output Mehrere Bilder aus Resourcen auslesen Allgemeine Java-Themen 8
K Eclipse Export - Bilder finden Allgemeine Java-Themen 7
K Bilder zerschneiden, stichwort: SLICE Allgemeine Java-Themen 3
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
K Inputstream -> Bilder Allgemeine Java-Themen 23
JAVAnnik Bilder in JLabel Array einfügen Allgemeine Java-Themen 2
A Problem mit Bilder laden mit sum.kern Allgemeine Java-Themen 9
C Bilder speichern Allgemeine Java-Themen 12
Z 2D-Grafik Webcam-Bilder analysieren und manipulieren Allgemeine Java-Themen 8
D Bilder extrahieren aus EPS - Problem mit ASCII85 Allgemeine Java-Themen 2
D Bilder aus externer .jar laden Allgemeine Java-Themen 3
S Swing mit JEditorPane per HTML auf Bilder in JAR zugreifen. Allgemeine Java-Themen 3
F Kleingerechnete Bilder extrem dunkel Allgemeine Java-Themen 2
SuperSeppel13 Bilder auf Anfrage laden - Threading Allgemeine Java-Themen 3
C Bilder rotieren, Denkfehler in der Berechnung? Allgemeine Java-Themen 2
C Bilder verkleinern und zusammenführen Allgemeine Java-Themen 5
hdi Bilder JAR-kompatibel machen Allgemeine Java-Themen 7
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
O Große Anzahl Bilder laden Allgemeine Java-Themen 7
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Bilder aus jarDateien laden Allgemeine Java-Themen 13
R Bilder von flickr runterladen? Allgemeine Java-Themen 3
Fadi Lade Bilder aus einem Jar File Allgemeine Java-Themen 6
D Bilder einer Webseite herunterladen Allgemeine Java-Themen 2
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
T Webseiten durchsuchen und Bilder downloaden Allgemeine Java-Themen 4
C Bilder automatisch bearbeiten/manipulieren Allgemeine Java-Themen 2
G Peformance Bilder laden? Allgemeine Java-Themen 3
G Bilder in javadoc einbinden Allgemeine Java-Themen 5
G Bilder skalieren Allgemeine Java-Themen 2
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
B zwei Bilder miteinander vergleichen Allgemeine Java-Themen 25
N Bilder in DB oder im Filesystem speichern Allgemeine Java-Themen 3
K bilder laden im voraus Allgemeine Java-Themen 7
Chris_1980 Bilder u. Objekte in JarArchiv speichern Allgemeine Java-Themen 2
S Buttons über Bilder? Allgemeine Java-Themen 18
F Mehrere Bilder zu einem Großen zusammenkleben Allgemeine Java-Themen 3
N Auf Bilder / Dateien innerhalb eines jar-Archives zugreifen Allgemeine Java-Themen 2
H Bilder richtig speichern und laden Allgemeine Java-Themen 4
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
TheJavaKid Bilder in die Registries Allgemeine Java-Themen 7
byte Fehlerhafte Bilder reparieren? Allgemeine Java-Themen 11
M Bilder abspielen mit Übergängen Allgemeine Java-Themen 12
G bilder in jar Allgemeine Java-Themen 6
T Bilder schnell in BufferedImage laden Allgemeine Java-Themen 4
T Bilder bearbeiten unglaublich langsam Allgemeine Java-Themen 9
G Bilder für Buttons in JarFile Allgemeine Java-Themen 5
Linad Bilder auf Gleichheit prüfen Allgemeine Java-Themen 6
G Bilder zeichnen und Zoom Funktion Allgemeine Java-Themen 2
G Bilder in JAR-File finden Allgemeine Java-Themen 5
M GIF-Bilder in JAR-Files Allgemeine Java-Themen 5
M Bilder in ein Array? Allgemeine Java-Themen 3
P Bilder aus Jar Allgemeine Java-Themen 2
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
J Problem mit .jar Archiv und Bilder Allgemeine Java-Themen 6
bummerland bilder im jar-archiv? Allgemeine Java-Themen 2
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben