![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 12.08.2005
Beiträge: 5
|
Hi,
ich hab oft hier gelesen und vom einen oder anderen Tipp profitiert. Ich hoffe ihr könnt mir auch diesmal helfen. Ich habe eine kleine Anwendung erstellt, bei der Bilder als Icon für Buttons und dergleichen benutzt werden. Zum lesen und laden der Bilder verwende ich folgenden Code: Code:
String path = imageDirectory + "pic1.gif"; Code:
private String imageDirectory = "/images/images_subfolder/"; wenn die Bilder in einem anderen (Eclipse) Projekt leigen verwende ich:
Code:
private String imageDirectory = "/proj_1/../images/subfolder/"; Weiß einer, wie ich dabei vorgehen muss oder was ich gerade falsch mache? Wäre nett. Gruss Mau. |
|
|
|
|
|
Nach oben #2 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.083
|
Hi, generell halte ich das für keine gute Idee. Sobald ich die Position einer deiner Jar-Dateien verändert, stimmt der Pfad nicht mehr.
Pack die Bilder doch stattdessen in ein eigenes JAR und füge das in den Classpath ein. Beispiel: Ich verwende häufig die Nuvola-Icons, also habe ich sie mir in ein (ziemlich großes) JAR gepackt, dass ich in jedes neue Projekt kopiere (habe grundsätzlich ein "lib"-Verzeichnis, in dem ich third-party Bibliotheken lagere) und dann zum Classpath hinzufüge. Verschwendet zwar etwas Platz, ist aber auch beim ausliefern des Programms hilfreich. Wenn es dir nur um Programme geht, die ausschließlich du benutzt, kannst du die JAR auch an einen festen Ort legen, und den dann absolut verwenden (also auch wieder zum Classpath hinzufügen). Oder du lässt das mit dem packen ganz weg und machst das da: Code:
ImageIcon icon = new ImageIcon("C:\\icons\\hello.png");
|
|
|
|
|
|
Nach oben #3 |
|
Neuer Benutzer
Registriert seit: 12.08.2005
Beiträge: 5
|
Hallo Pago,
und vielen Dank für die Antwort. Nein, es geht hier um eine mittlere Anwendung, die von einigen Leuten erstellt wurde und aus vielen Projekten und packages besteht. Eigentlich sollte/muss ich nachher mit build herumhantieren aber ich wollte die Angelegenheit der jar+Bilder zunächst mit einen kleinen überschaubaren Beispiel testen, um zu sehen ob und wie es geht. ich fürchte nicht ganz. ich habe nur eine jar-Datei, die ich zum ausführen benutze. Die wiederum enthält die Resourcen (Bilder) die ich brauche. Ich hätte schon gerne gewusst, wie ich da gezielt auf Bilder zugreifen kann, die in der jar-Verzeichnisstruktur vorhanden sind. im übrigen funktioniert das Packen der Bilder in ein jar und das Ausführen auch nur solange gut, solange ich das programm von eclipse aus starte. Auf der Eingabezeile oder als jar tut es dann nicht mehr (wegen "fehlender" Bilder). Ich weiß nicht, ob ich einen Fehler bei der Pfadangabe mache (die im nicht komprimierten Fall funktioniert) oder generell beim zusammenpacken der Datei. Ich hoffe du oder jemand anderes weiß was. Gruss Mau. |
|
|
|
|
|
Nach oben #4 |
|
Neuer Benutzer
Registriert seit: 12.08.2005
Beiträge: 5
|
Was ich vergessen hab zu sagen, bei den Resourcen geht es nur um ein paar Bilder, die als icon für buttons oder ähnliches dienen sollen. Also keine große Fluktuation in der Hinsicht zu erwarten. Ausserdem soll das ganze zusammengepackt werden, damit es anderen zur Verfügung gestellt werden kann, die sich nicht unbedingt mit den innereien des programms beschäftigen müssen. So viel nur um den Rahmen ein wenig zu beleuchten.
|
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
Hi,
ich weiß nicht genau, ob das dort beschriebe Problem mit deinem gleich zu setzen ist http://www.mrunix.de/forums/showthre...767#post164955 |
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 27.02.2006
Beiträge: 136
|
Hilft die Standard-Lösung weiter?
Code:
URL url = this.class.getResource( "<file_with_path>"); Image image = Toolkit.getDefaultToolkit().getImage( url); Wenn die Lokation unklar ist, kann man den ClassLoader hinzu ziehen und damit übergreifend (alles, was der ClassLoader halt bei sich hält) abfragen: Code:
Enumeration<URL> resenum = this.class.getClassLoader().findResources( "<file_with_path>");
while( resenum.hasMoreElements()) {
System.out.println( resenum.nextElement());
}
Jumper, the II. |
|
|
|
|
|
Nach oben #7 | |
|
Neuer Benutzer
Registriert seit: 12.08.2005
Beiträge: 5
|
Hi nochmal,
irgendwie war ich zu lang angemeldet und wurde dann wohl rausgeschmiessen mit samt meinem Geschriebenen. Jedenfalls: Zitat:
Jedenfalls kriege ich jetzt schon viel weniger Null-Pointer und kann schon viele der Icons darstellen. Noch habe ich sie nicht alle korrekt gesetzt. Ich melde mich, falls es das war aber zunächst nochmal danke allen für die Inputs. Viele Grüße und schönes Wochenende Mau |
|
|
|
|
|
|
Nach oben #8 |
|
Neuer Benutzer
Registriert seit: 12.08.2005
Beiträge: 5
|
SO,
nachdem ich alle Dateinamen angeglichen und sonstige Kleinigkeiten behoben habe funktioniert alles auf der Kommandozeile genauso wie von Eclipse aus. Die Lektion: bzgl. Groß- und Kleinschreibung sind Eclipse und Windows ziemlich tolerant (ist vorerst nur eine Vermutung von mir, vielleicht ist es auch was anderes, jedenfalls ging es, nachdem ich dies behoben habe). Ich musste allerdings feststellen, dass die Fragestellung, so wie ich sie eingangs formuliert habe (Projektübergriefend ...) trotzdem noch nicht beantwortet ist, denn die Zugriffe auf Bilddateien erfolgen hier immer projektintern. Aber vielleicht klären wir das dann ein anderes Mal. Das, was ich für ein Problem in diesem Fall hatte ist zunächst einmal gelöst. Also vielen Dank nochmal Pago, Ben und Jumper. Weiter so!! Viele Grüße Mau. |
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
In Projekt A gibt es ein Quellverzeichnis, bei dem unter /lib/images/ABC.jpg ein Bild zu finden ist.
Projekt B will drauf zugreifen. Lösung: Eclipse, Rechte Maustaste auf Projekt A, Eigenschaften. Unter Java-Build-path, "export" das Quellverzeichnis anhaken, wo das Bildchen drin ist. Projekt B anklicken, Eigenschaften, Java Build Path. Projekt B ist abhängig von Projekt A. Nun kannst du wie gewohnt problemlos von Projekt B auf das Image drauf zugreifen, ohne zusätzlichen Verzeichnishumbug. Wie wenn es bei dir lokal im gleichen Jar wäre. Am Ende, also in Echt-Betrieb müssen beide Jars verfügbar sein und via ClassLoader eingebunden sein. Dann lässt sich über den normalen Weg des ClassLoaders auf die Datei zugreifen. Das obige Beispiel: this.class.getResource( "<file_with_path>"); ist dafür ein guter Weg.
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Dateien aus SVN 1 auschecken, in SVN 2 einchecken, keine eigenen Änderungen vorhanden | Ben | Tools, Server, Betriebssysteme | 2 | 21.03.2007 18:53 |
| Cache leeren um mit file Dateien zu durchsuchen | Tryzero | PHP-Programmierung | 12 | 12.03.2007 10:13 |
| [PHP] FTP-Funktionen in PHP nutzen | MrNiceGuy | Tutorials | 0 | 24.05.2006 14:18 |
| Zugriff auf Dateien in Jar | Binary | Allgemeine Java-Programmierung | 2 | 14.03.2006 13:52 |
| Eclipse jar erstellen | mr.no | Eclipse | 2 | 24.07.2005 18:36 |