Eclipse kann Bilder nach dem Export von JAR -Paket nicht laden?
Der Grund für dieses Problem ist hauptsächlich auf das Pfadproblem, das häufig normal im Projekt ausgeführt wird, aber sobald es in ein Glas verpackt ist, kann es nicht normal angezeigt werden. Fassen wir die Methoden zusammen, um dieses Problem zu lösen:
1. Lösen Sie mithilfe externer Ressourcendateien
Nach dem Verpacken des Projekts zum Generieren von JAR erstellen Sie einen neuen Ordner und platzieren Sie alle im Projekt verwendeten Bilddateien und generierte JAR -Dateien in diesem Verzeichnis. Solange der Code die Bilddateien korrekt verweist, wie z.
Auf diese Weise werden die Bilddatei und die Klassendatei nicht zusammen im Paket platziert. Die Klassendatei befindet sich im Paket und die Bilddatei befindet sich im Projektstammverzeichnis.
2. Lösen Sie mithilfe interner Ressourcendateien
Setzen Sie die im Projektpaket verwendeten Bilddateien ein, und bei der Verpackung werden die Bilddateien gleichzeitig in die JAR -Datei eingegeben. Diese Methode sollte einen der folgenden im spezifischen Code verwenden:
ImageCon image = new ImageCon (this.class.getResource ("icons/logo.gif"));Das Folgende ist eine detaillierte Beschreibung dieser Methode:
Wenn Sie ein Programm für grafische Schnittstellen schreiben, müssen Sie verschiedene Bildressourcen verwenden. Wie veröffentlichen Sie diese Bildressourcen, wenn Sie Ihr Programm veröffentlichen?
Am einfachsten besteht die Verpackung dieser Bildressourcen mit Ihrer Klassendatei in eine ausführbare JAR-Datei, sodass Sie nur eine JAR-Datei veröffentlichen müssen, um alle Inhalte einzuschließen, und Benutzer können das Programm nur durch Doppelklicken auf die JAR-Datei ausführen. Wenn Sie Bilder in einer JAR -Datei verpacken, wie können Sie beim Schreiben von Programmen auf diese Bilder zugreifen?
Was sind die Wege für diese Bilder? Sie können die Methode GetResource () verwenden, um dieses Problem zu lösen.
Hier analysieren wir die beiden häufigsten Situationen:
1. Sie verpacken alle Ressourcen in Andy.jar, und Ihre Klasse befindet sich in einem Paket: Paket Andycpp; Alle Ihre Bildressourcen werden im Bildordner im Bilder platziert, und der Bilderordner befindet sich ebenfalls im AndyCPP -Paket. Auf diese Weise ist der letzte Weg:
Andy.jar
| __andycpp
| __ Guitest.Class
| __ Bilder
| __ snap1.jpg
Da der Bildordner und die Klasse, die sich auf die gleiche Ebene bezieht, können Sie über einen relativen Pfad darauf zugreifen:
java.net.url imgurl = guitest.class.getResource ("Images/snap1.jpg"); ImageCon img1 = new Imageicon (imgurl);Was hier geachtet werden muss, sind Fallprobleme! Das Innere der JAR -Datei ist fallsempfindlich. Wenn das Bild selbst Snap1.jpg heißt und Sie den Pfad zu Bildern/Snap1.jpg schreiben, wird das Bild nicht gefunden. Es sollte auch beachtet werden, dass jede Klasse (Anmerkung, kein Objekt) über eine Methode von GetResource () verfügt, Sie sie jedoch nicht beiläufig verwenden können. Sie können nur die GetResource () -Methode einer Klasse verwenden, die sich auf der gleichen Ebene wie im Bildordner befindet. In der obigen Abbildung sind beispielsweise die Guitest -Klasse und die Bilder auf derselben Ebene, sodass Sie die GetResource () -Methode dieser Klasse verwenden müssen.
2. Wenn Sie in einem anderen Fall viele Klassen haben und die Paketstruktur sehr kompliziert ist, ist es unwahrscheinlich, dass Sie das Bild und die Klasse auf derselben Ebene setzen, aber Sie sollten das Bild auf die äußerste Ebene legen und alle Klassen über absolute Pfade auf das Bild zugreifen lassen:
Andy.jar
| __andycpp
| __ Guitest.Class
| __ Bilder
| __ snap1.jpg
Der Code ist wie folgt:
java.net.url imgurl = guitest.class.getResource ("/images/snap1.jpg"); imageicon img1 = new Imageicon (imgurl);Haben Sie den Unterschied vom obigen Code gesehen? Der Unterschied ist sehr subtil. Fügen Sie einfach einen Backslash hinzu "/" Vor "Bildern". Dieser Backslash repräsentiert das Stammverzeichnis, und kein Backslash repräsentiert den relativen Weg.
In dem obigen Artikel handelt es sich kurz um das Pfadproblem von Java -Verpackungsbildern in JARs, ist der gesamte Inhalt, den ich mit Ihnen geteilt habe. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.