Aus jar Ordner lesen

roadrunner87

Mitglied
Hallo,
ich habe ein kleines Problem mit Jar Files.
Und zwar möchte ich gerne wenn ich mein Programm laufen lasse auf eine Datei, welche sich innerhalb der jar liegt zugreifen.
Nun versucht mein Programm bei angabe der Datei "res/datei.html" auf den Ordner außerhalb der jar zuzugreifen.

Wie kann ich die Jar konfigurieren, so dass bei angabe von "res/datei.html" die interne jar datei genutzt wird?


Danke

Gruß
 
G

Gast2

Gast
Und zwar möchte ich gerne wenn ich mein Programm laufen lasse auf eine Datei, welche sich innerhalb der jar liegt zugreifen.
Von wo willst du da zugreifen? Von außen kannst du auf die HTML Datei nicht zugreifen, dazu müsste das archiv erst entpackt werden.

Nun versucht mein Programm bei angabe der Datei "res/datei.html" auf den Ordner außerhalb der jar zuzugreifen.

Wie kann ich die Jar konfigurieren, so dass bei angabe von "res/datei.html" die interne jar datei genutzt wird?
Öhm was? interne jar datei? Order außerhalb der jar?
Erklär bitte nochmal etwas genau auf was zu von wo zugreifen willst.
 

roadrunner87

Mitglied
Also ich habe ein Programm geschrieben.
In diesem Programm habe ich zum validieren einen Befehl drin, welche dies erledig.
Dafür benötige ich ja aber eine XSD.

Wenn ich es über eclipse laufen lasse funktioniert alles wie gewollt (hier findet er die XSD)

Nun will ich aber mein Programm gere in eine Jar verpacken, damit ich diese leicht verteilen kann.

Wenn ich aber jetzt mein Tool starte, kann er die XSD nicht finden, da er ja außerhalb der Jar nach der XSD sucht, aber keine findet.

Ich würde meinen Programm gerne sagen:
"Wenn du in einer Jar ausgeführt wirst dann nimm bitte die "interne" XSD, ansonsten die "externe""
 

Michael...

Top Contributor
Kommt darauf an wie die Schema Datei verwendet wird. Vermutlich muss diese zunächst aus dem jar extrahiert werden, damit Sie als Datei vorliegt.
Code:
getClass().getResourceAsStream(...)
liefert einen InputStream mit dem man die XSD aus dem jar auslesen kann.
 

JavaProfi

Aktives Mitglied
Sehr geehrter Herr roadrunner,

Java arbeitet nicht mit relativer Adressierung bei der Lokalisation von Ressourcen, sondern mit absoluter Adressierung. Da sie nicht wissen können, wo sich später das JAR-File auf einem Zielrechner befindet, kann die Applikation auch nicht den absoluten Pfad kennen.

Daher müssen Sie zunächst den absoluten Pfad ihrer Datei innerhalb des JAR-Files als "Unified Reccource Locator" bestimmen.

Die Standardmethode dazu ist getclass().getResource(String name).
Die Methode gibt einen URL zurück. In Ihrem Fall folgender Aufruf:

getclass().getResource("/res/datei.html")

Mit freundlichen Grüßen

Der JavaProfi
 

L-ectron-X

Gesperrter Benutzer
[ot]Hi JavaProfi, wir pflegen hier einen lockeren ungezwungenen Umgangston. Ein Sie ist daher nicht nötig. ;)
BTW: Herzlich willkommen! :meld:[/ot]
 

roadrunner87

Mitglied
Hallo,
ich habe folgenden Code:
Java:
		if(schema == null) {
			final SchemaFactory schemaFactory = 
					SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
			schema = schemaFactory.newSchema(new File("res/xsd/config.xsd"));
		}
 
B

bygones

Gast
Hallo,
ich habe folgenden Code:
Java:
		if(schema == null) {
			final SchemaFactory schemaFactory = 
					SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
			schema = schemaFactory.newSchema(new File("res/xsd/config.xsd"));
		}
wie schon oben gesagt musst du das ganze ueber [c]getClass().getResource("/res/xsd/datei.html")[/c] laden. Die Datei muss dann im jar unter dem Ordner res/xsd liegen bzw wenn du in eclipse arbeitest und noch kein jar hast muss dieser Pfad im Classpath liegen
 

roadrunner87

Mitglied
Das hat ja eben nicht funktioniert:

Java:
        if(schema == null) {
            final SchemaFactory schemaFactory = 
                    SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            schema = schemaFactory.newSchema(new File(getClass().getResourceAsStream("/res/xsd/config.xsd")));
        }
 

roadrunner87

Mitglied
Ich habe es gerade nochmals versucht, aber ich bekomme immer null heraus.
Ich habe auch schon den Classpath gesetzt (hoffe ich).
Ich habe unter Project -> Properties -> Java Build Path -> Libraries den res Ordner hinzugefügt!
 

Michael...

Top Contributor
Ein Element in einem jar ist keine Datei und damit auch nicht über File handhabbar.
Wenn du via File darauf zugreifen musst, musst Du Dir den Inhalt zunächst aus dem jar in z.B. ein tmp Verzeichnis schreiben. Also z.B. den InputStream (getResourceAsStream(...)) lesen und per FileOutputStream rausschreiben. Erst danach kannst Du mit File etwas anfangen.
 

roadrunner87

Mitglied
Hallo,
ich habe eine Jar und in dieser ist das Programm und die Datei. Ich habe ja auch die Dtei im Classpath hinterlegt, aber eclipse findet sie anscheinend nicht.
 

Michael...

Top Contributor
Soll die Anwendung aus Eclipse heraus gestartet werden? Dachte es ginge die um das aufführen eines exportierten JARs? Nur um sicher zu gehen, dass Programm lässt sich bereits aus Eclipse heraus nicht ausführen?
Wie schaut die Package Struktur aus? Hast Du neben den Packages und Klassen für Dein Programm auch ein Package res.xsd in dem sich die Schema Datei befindet?
 

roadrunner87

Mitglied
Hallo,
die Anwendung soll zum einen aus eclips aus gestartet werden können und zum anderen aus einer Jar.
Mit dem statement, welches ich eingeführt habe, geht es nicht mehr.
Mit der Jar habe ich es noch nicht probiert. Aber es soll ja in eclipse auch funktionieren.

Die Struktur sieht so aus

Projekt
- src
- lib
- res
 

Andreas29

Bekanntes Mitglied
Hi,

wenn ich mich nicht irre, müsste der Aufruf von Class.getResource() die Resource relative zur Klasse suchen, oder nicht? Beispiel:
Wenn ich die Klasse de.foo.bar.Bazz habe und Bazz.class.getResource("test.txt") ausführe, wird die Datei test.txt im Verzeichnis der Klasse (sprich javatechnisch im package de.foo.bar) gesucht.

Dagegen führt der Aufruf von Class.getClassLoader().getResource() dazu, dass die Resource im Classpath-Root (also im eclipse-java-Project im Verzeichnis src) gesucht wird.

Sprich, dass wichtige ist der Aufruf von getClassLoader().

Gleiches gilt auch für die Methode getResourceAsStream().

Grüße,
Andreas
 

Michael...

Top Contributor
Code:
Class#getResource("test.txt")
relativ zur aufrufenden Klasse
Code:
Class#getResource("/test.txt")
absolut vom der Basis
Abhängig von
Code:
vorangestelltem /
oder
Code:
nicht vorangestelltem /
baut die Methode den absoluten Namen der Resource zusammen und delgiert den Aufruf an den ClassLoader.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
M Ordner im ZIP-File lesen Java Basics - Anfänger-Themen 2
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
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
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 res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
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
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
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