Ordner mit Bilddateien in jar-Datei mit exportieren

Status
Nicht offen für weitere Antworten.
O

Oak

Gast
Hi Leute,

ich habe ein etwas seltsames Problem was nicht direkt Java betrifft, wohl eher die anfänglichen Versuche unter der Eclipse IDE eine *.jar-Datei zu erstellen.

Es geht um folgendes:

In dem Programm das ich geschrieben habe, finden Zugriffe auf Bilder statt - das Betriebssystem mit dem ich operiere ist Linux - Distribution: Ubuntu 7.10

Der Zugriff liegt vor wie z.B. :

Code:
private String url1 = "./workspace/test/Apfel.jpg";

Nun ist die Frage: Was muss ich genau tun bzw. beim Export beachten damit beim Erstellen einer .jar-Datei die Bilder mit einbezogen werden - und zwar so unabhängig dass ich von jedem PC aus beim Starten der *.jar-Datei die Bilder über das Program aufrufen kann?

Danke im Vorraus für Tipps u. Lösungen und mit besten Grüßen

Oak
 

Wildcard

Top Contributor
1. du musst die Resourcen über den ClassLoader laden (getClass().getResource)
2. die resourcen müssen mit ins jar exportiert werden
3. die resoucen müssen im classpath liegen
 
O

Oak

Gast
Danke für die schnelle Rückmeldung,

ich bin noch rel. jung auf dem Gebiet - wie wird eine Resource via ClassLoader genau geladen ? (evtl. Beispiel)

Bei 2. keen Problem

Bei 3. : Wie kann diese Hürde gemeistert werden ?

Danke für die Geduld und mit besten Grüßen

Oak
 

Wildcard

Top Contributor
1. steht doch oben, getClass().getResouce
3. üblich ist zB ein zweiter source folder resources. Dadurch liegen sie Bilder dann auch im classpath beim export
 
O

Oak

Gast
zu 3. ...danke - dass hilft doch schon mal weiter

zu 1. ...wo trage ich das ein ? Direkt im Sourcecode getClass().getResource("./workspace/test/Apfel.JPG"); oder in der Manifest - Datei ?

Wenn dies im Sourcecode geschen soll wird es übel - denn jeder String (Apfel, Birne etc.) soll später auf einem Stack gepusht werden. Woraufhin dann ein Abgleich zwischen Dateiname des Bildes mit einem eingegebenen String stattfinden soll ...daher muss ich sorgfältig überlegen wass ich wo genau verändere bzw. was ich im Falle einer Modifizierung dann wo anders noch verändern muss...

Regards

Oak
 

Wildcard

Top Contributor
Ja, natürlich im Quellcode. getResource gibt dir die URL über die du anschließend das Bild laden kannst (aber keine File API verwenden, es handelt sich nämlich nicht um Dateien!).
./workspace/test/Apfel.JPG
So würde der Pfad allerdings nicht stimmen, du gibst sozusagen den Package Pfad an (und du hast sicherlich kein Package 'workspace', oder?).
 
G

Gast

Gast
aber keine File API verwenden, es handelt sich nämlich nicht um Dateien!

Doch just dies kommt bei mir später im Einsatz ...

Code:
File grannySmith = new File(url1);

Regards

Oak
 

Wildcard

Top Contributor
Dann solltest du just dies ändern.
Bei der Resource handelt es sich um einen Jar Entry (bzw, Zip Entry), nicht um eine Datei.
 
O

Oak

Gast
Nach diversen Recherchen, so scheint es mir - wurde hier etwas missverstanden (evtl. durch meine beim ersten Post falsche Formulierung bedingt...)...auf ein neues:

Ich habe via Eclipse Export eine JAR-Datei erstellt ...diese beinhaltet folgende Elemente:

META-INF/MANIFEST.MF

Obst.java
Obst.class
Init.java
Init.class

obstschale/Apfel.jpg

.classpath
.project


Nun wird im Programm auf die Datei "Apfel.jpg" zugegriffen wie man z.B. der Zeile

Code:
private String url1 = "./workspace/test/Apfel.jpg";

entnehmen konnte ...Ziel des Ganzen ist es jedem Bekannten, Freund, Oma, Opa etc. die JAR-Datei in die Hand zu drücken - so dass sie es später starten können, ohne dass sie vorher sich irgend einen Ordner "obstschale" in C:\ oder in nem Linux Verzeichniss etc. anlegen müssen .

Regards

Oak
 

Wildcard

Top Contributor
Ich wüsste nicht wo das Missverständnis liegen soll.
Du willst Bilder aus einem jar laden und ich meine dir erklärt zu haben wie es funktioniert.
 
O

Oak

Gast
Und mir missfällt der Gedanke den kompletten Code deswegen umzustrukturieren ...dennoch bin ich sehr dankbar für deinen Tipp mit dem ClassLoader ...auf dass ich eine Lehre daraus ziehe u. kommende Programme bei der Konstruktion mehr durchdenke als nur quick 'n dirty was zu machen...

...daher gebe ich gleich einen Ansatz für einen Workaround: Wie ist vorzugehen wenn die Bilder außerhalb einer JAR-Datei geladen werden sollten - und das möglichst unabhängig wo auf der Festplatte der Ordner "Obstschale" liegt ?

Regards

Oak
 

Wildcard

Top Contributor
Den Workaround würde ich dir nicht empfehlen. Davon abgesehen, dass es IMO unschön ist, musst du erstmal herausfinden wo dein Programm überhaupt liegt, was sich nur über hässliche Hacks bewerkstelligen lässt.
 
O

Oak

Gast
Das ist einfach eine einzige Katastrophe ...

Gut -...die für heute letzten Fragen ...danach nerve ich auch nicht weiter....

1. Ist es möglich nach dem Aufruf

Code:
getClass().getResource("./test/Apfel.JPG");
(hoffe diesmal hab ich es richtig getippt) ...dass es dann in einem JFrame problemlos via

BufferedImage image = ImageIO.read(arg0); dargestellt wird ...oder habe ich da anders vorzugehen...

kurz: Wie kriege ich mit der getClass().getRessource Methode es hin dass das Bild danach

a) in einem popeligen JFrame erscheint

und b) ist es möglich dann auf getClass().getRessource noch ein toString() anzuwenden um das in einen String umzuwandeln ?

Regards und gute Nacht

Oak
 

Wildcard

Top Contributor
Oak hat gesagt.:
Das ist einfach eine einzige Katastrophe ...
Jetzt mach mal kein Drama draus, wenn du ein paar 'new File's zu entfernen als Katastrophe empfindest, hast du noch einen Weg zum Entwickler :wink:

Code:
BufferedImage image = ImageIO.read(getClass().getResource("myPicture.jpg"));
 
O

Oak

Gast
Entschuldige die verspätete Rückmeldung.

Zunächst: Ja, ich habe mir bislang stets angewöhnt gehabt ein Programm das man entwerfen will so gut wie möglich zu durchdenken.

Diese Gewohnheit hab ich hier gebrochen und es mal quick 'n dirty programmiert ...dafür gab es die Quittung, doch gut - so lernt man auch ;)

Desweiteren: Vielen Dank Wildcard für a) die Geduld u. b) Die Hilfe ...hab es nun umsetzen können und ich bin überrascht wie viel angenehmer sich der Code dadurch gestalten lässt ;)

Ich habe noch eine (vorerst ?....bestimmt "vorerst" *hihi*) letzte Frage :

Ich habe nun auf einen Stack s3

Code:
this.getClass().getResource("obstschale/Apfel.jpg")

gepusht.

Danach soll in einem System-Output von dem Dateinamen nur das "Apfel" ausgegeben werden ...

so z.B. :

Code:
System.out.println(s3.peek().toString().subSequence(13, s3.peek().toString().length()-4));

Bzw. gibt es eine Methode in String wo gezielt nur der Dateiname "Apfel.jpg" ausgegeben wird ...sprich die gesammte Pfadangabe davor nicht mehr mit aufgeführt wird wie z.B. .../obstschale/... ?

Mit besten Grüßen

Oak
 

Wildcard

Top Contributor
Oak hat gesagt.:
Bzw. gibt es eine Methode in String wo gezielt nur der Dateiname "Apfel.jpg" ausgegeben wird ...sprich die gesammte Pfadangabe davor nicht mehr mit aufgeführt wird wie z.B. .../obstschale/... ?
Nein! String ist String und nicht File, daher hätten solche Methoden dort nichts verloren.
substring und lastIndexOf genügt auch völlig.
 
O

Oak

Gast
Heißt es wäre mittels substring u. lastIndexOf möglich es zu realisieren dass nachher nur Apfel.jpg, Birne.jpg, Orange.jpg bzw. Apfel, Birne, Orange etc. dann aufgeführ wird ?

- Werde es mir in der Javadoc angucken, danke für den Tipp :)

Mit besten Grüßen

Oak
 
O

Oak

Gast
So, nun ist es mir gelungen ....

So sieht es aktuell aus, u. funktioniert im gesammten Sourcecode so wie es funktionieren soll ^^

Code:
if(str.equalsIgnoreCase(s3.peek().toString().substring(s3.peek().toString().lastIndexOf(("/"))+1, s3.peek().toString().length()-4)))
{

Zur Erläuterung, damit nicht alles hier so kommentarlos im Raum steht:

Es wird rückwärts geguckt, und die Position als int erfasst wo das erste "/" auftaucht - dies erreicht man mittels

Code:
lastIndexOf(("/"))+1

Nun muss von der Position die nach dem "/" in der Pfadangabe z.B. C:\test\nochEinTest\Apfel.jpg auftaucht noch die Länge des Wortes "Apfel" erfasst werden ...da "Apfel" eine andere Länge hat als z.B. "Kirsche" muss es so eingerichtet werden dass ein Stringvergleich bei jeder "Obst" Pfadangabe gemacht werden kann .

Dies wird erreicht durch

Code:
s3.peek().toString().length()-4

Äußerst grob und in kurzform:

mittels
Code:
lastIndexOf(("/"))+1
erreicht man die "Anfangsposition" ...sprich die Position die vor dem Gesuchten Begriff (z.b. "Apfel" ) steht

und mit

Code:
s3.peek().toString().length()-4

erreicht man die "Endposition" ...sprich jene Position wo der String endet .


Die Anfangs u. Endposition eines Abschnittes eines Strings (Eines Substrings werden für die Methode

Code:
s3.peek().toString().substring(int a, int b);

benötigt.

So viel dazu quick 'n dirty

Vielen Dank nochmal an Wildcard für die Hilfe ...wenn von eurer Seite keene Fragen bestehen, würd ich euch bitten den Thread für "gelöst" zu markieren ;)

Mit besten Grüßen

Oak
 

RedNifre

Mitglied
Ich habe gerade ein aehnliches Problem. Ich habe verschiedene Buttons, die von einem Button erben und jeweils eine andere Grafik haben sollen. Dies wollte ich so realisieren:

Code:
public class myButton_stop extends myButton
	{
		public myButton_stop(Navigation_Panel np)
		{
			super(new ImageIcon(getClass().getResource("../Images/ButtonStopInactive.png")));
		}

Das Problem ist nur, dass ich getClass().getRessource() nicht in einem Konstruktor verwenden darf. Was soll ich tun?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
T src Ordner ausführen Java Basics - Anfänger-Themen 9
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
J Eclipse Einrichten : Umzug in anderen Ordner Java Basics - Anfänger-Themen 2
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
F Zeile in Ordner Java Basics - Anfänger-Themen 4
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
das_leon Auf Ordner zugreifen (Vollzugriff) Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Ordner im Explorer öffnen lassen Java Basics - Anfänger-Themen 2
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
L Ordner Zippen Java Basics - Anfänger-Themen 2
L Ordner zusammenlegen Java Basics - Anfänger-Themen 3
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M Erste Schritte Ordner im selber Verzeichnis wählen Java Basics - Anfänger-Themen 1
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
D Ordner der Ausgeführten Datei erhalten Java Basics - Anfänger-Themen 4
P newbie- Frage zu Ordner-Projektstruktur Java Basics - Anfänger-Themen 3
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
M Input/Output Ordner erstelen? Java Basics - Anfänger-Themen 12
A Ordner zippen Java Basics - Anfänger-Themen 10
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
D Ordner auf Desktop erstellen(Pc unabhängig) Java Basics - Anfänger-Themen 3
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
I Ordner schnell durchlesen Java Basics - Anfänger-Themen 11
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
V bin und src Ordner Java Basics - Anfänger-Themen 3
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
C src-Ordner in jar-Datei (Eclipse) Java Basics - Anfänger-Themen 4
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
M Java Eclipse IDE erstellt keinen Bin Ordner. Java Basics - Anfänger-Themen 10
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
W Ordner "auslesen" Java Basics - Anfänger-Themen 18
R Aus jar Ordner lesen Java Basics - Anfänger-Themen 27
F Auf Ordner im selben Verzeichniss zugreifen Java Basics - Anfänger-Themen 3
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
O Erste Schritte Runnable Jar <- Ordner Fehlen Java Basics - Anfänger-Themen 6
D höchster ordner in zip datei Java Basics - Anfänger-Themen 14
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
V .cab Dateien im Win Profil Ordner? Java Basics - Anfänger-Themen 5
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
F Ordner in JAR scannen Java Basics - Anfänger-Themen 3
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
P Kompelieren von 2 Java Dateien im selben Ordner Java Basics - Anfänger-Themen 13
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
J Dateien aus Ordner auslesen bzw. einlesen Java Basics - Anfänger-Themen 4
G jar datei funktioniert nicht ohne jdom.jar im Ordner Java Basics - Anfänger-Themen 7
H Textdateien in Ordner einlesen - unendlich ? Java Basics - Anfänger-Themen 8
B Datei in mehrere Ordner splitten und wieder zusammenfuegen... Java Basics - Anfänger-Themen 3
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
StrikeTom Wie ermittel ich alle dateinamen in einem Ordner Java Basics - Anfänger-Themen 2
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
BleedingSt4r Ordner + Unterordner "auslesen" ? Java Basics - Anfänger-Themen 32
S Ordner erstellen Problem Java Basics - Anfänger-Themen 4
S Ordner umbenennen mit renameTo - mysteriöses Problem Java Basics - Anfänger-Themen 9
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
M Ordner Download Java Basics - Anfänger-Themen 11
Developer_X Zugriff auf PC verweigert bei Ordner erstellung, wie zulassen?! Java Basics - Anfänger-Themen 3
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
P FTP Ordner löschen Java Basics - Anfänger-Themen 5
Developer_X Java - per Java einen Ordner löschen Java Basics - Anfänger-Themen 9
S Dateien von einem Ordner in den anderen kopieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben