Auf HTML-Dateien in einer Jar zugreifen

sylo

Bekanntes Mitglied
Hi

habe jetzt ne weile hier im Forum gesucht aber irgendwie nicht das gefunden welches meine Frage beantwortet. Irgendwie steh ich glaub ich etwas auf dem Schlauch.

Folgendes Problem:
Ich habe ein Tool geschrieben in dem per Button-Klick eine HTML-Seite in einem JEditorPane gezeigt wird. Wenn die HTML-Dateien im gleichen Projekt bzw. in der gleichen Jar liegen, funktioniert es einwandfrei.
Jetzt wollte ich die ganzen HTML-Dateien in eine Jar packen und dann während der Laufzeit drauf zugreifen. Die Jar ist als externe Jar importiert worden. Als eine Möglichkeit habe ich dies gefunden.
Java:
InputStream introSoundInputStream = KLASSE.class.getClassLoader().getResourceAsStream(pfad);
Die Frage die ich mir stelle ist, welche Klasse ich hier angeben muss, um auf die jar zuzugreifen. In der Jar sind ja gar keine Klassen sonder nur HTML-Dateien.

Grüße
sylo
 

Murray

Top Contributor
Pack doch in das Jar-File noch eine Klasse - entweder nur einen Dummy, oder Du findest noch sinnvolle Funktionalität (z.B. eine main-Methode, die eine Fehlermeldung, eine Versionsnummer oder ein Verzeichnis der HTML-Seiten ausgibt). Auf jeden Fall sollte irgendeine Klasse im Jar-File sein, damit Du diese Klasse dann im Code verwenden kannst, um über ihren Classloader auf andere Ressourcen im Jar-File zuzugreifen.
 

hansmueller

Bekanntes Mitglied
Hallo,

wichtig ist zu wissen, wo sich diese Jar-Datei mit den html-Dateien befindet.
Wenn sie im Classpath (z. B. im Manifest) eingetragen ist, kannst du auf deren Inhalt automatisch zugreifen.

Das sollte eigendlich mit
Java:
this.getClass().getClassLoader().getResourceAsStream(pfad);
oder
Java:
Object.class.getClassLoader().getResourceAsStream(pfad);
oder
Java:
NamederKlasseinderdieMethodeverwendetwird.class.getClassLoader().getResourceAsStream(pfad);
gehen. Benutz einfach die Klasse, in der du dich befindest.

Wenn sich die Jar irgendwo auf der Platte befinden kann, mußt du (evtl. durch einen Dialog) erst herausbekommen, wo sich diese Datei befindet.

MfG
hansmueller
 

sylo

Bekanntes Mitglied
Hi

danke mal für eure Antworten. Irgendwie klappt das aber noch nicht. Ich habe nun eine Dummy-Klasse hinzugefügt, die nur den Rumpf der main methode hat.

Ich habe nun folgendes gemacht:
Ich habe eine Jar-Datei die nennt sich HTML.jar. Die Struktur dieser jar sieht folgendermaßen aus:
-HTML.jar
--html
---HTML.class
---Seite1.html
---Seite2.html
--META-INF
---MANIFEST.MF

Diese Jar-Datei habe ich mittels Import-Funktion von Eclipse in mein Projekt importiert und es befindet sich im resources-Ordner meines Projektes. Mit Rechtsklick auf die Jar-Datei und mit Klick auf Add to Build Path, füge ich die Jar der ClassPath hinzu, welches ich dann unter Referenced Libraries, in meinem Projekt, finde.

So nun versuche ich darauf zuzugreifen mit
Java:
ClassLoader classLoader = HTML.class.getClassLoader();
InputStream is = classeLoader.getResourceAsStream("/html/Seite1.html";
Hier wird mein is aber "null". Genauso bei
Java:
InputStream is = classeLoader.getResourceAsStream("html/Seite1.html";
und bei
Java:
InputStream is = classeLoader.getResourceAsStream("Seite1.html";

Was mache ich da noch falsch?

Grüße
sylo
 

sylo

Bekanntes Mitglied
Hi

Hab meinen Fehler entdeckt. Lag an einer ganz anderen Stelle. Tut mir leid für die Verwirrung.

So wie hansmueller und Murray gesagt haben, funktioniert es einwandfrei.

Grüße
sylo
 

Michael...

Top Contributor
Eine Klasse im jar ist nicht notwendig, wenn das jar-File im CLASSPATH eingebunden ist kann man die html Datei z.B. mit:
Java:
InputStream is = getClass().getResourceAsStream("html/Seite1.html");
oder
Java:
InputStream is = IrgendeineKlasse.class.getResourceAsStream("html/Seite1.html");
Bsp.:
tester.jar enthält Testing.class mit entsprechender Zeile im Code
res.jar enthält html.Seite1.html

beide jar-Files liegen im selben Verzeichnis
dann kann aus dem Verzeichnis heraus das Programm mit
java -classpath tester.jar;res.jar Testing
gestartet werden und die html-Datei auslesen.

Entscheiden ist nur, dass das jar-File im CLASSPATH aufgeführt wird.
 

sylo

Bekanntes Mitglied
Hi

Java:
InputStream is = getClass().getResourceAsStream("html/Seite1.html");
oder
Java:
InputStream is = IrgendeineKlasse.class.getResourceAsStream("html/Seite1.html");

Habe es gerade ausprobiert. Fehlt nur noch der ClassLoader, dann geht es.
Java:
InputStream is = getClass().getClassLoader().getResourceAsStream("html/Seite1.html");
oder
Java:
InputStream is = IrgendeineKlasse.class.getClassLoader().getResourceAsStream("html/Seite1.html");

Grüße
sylo
 
I

imho1001

Gast
@Michael

hab dein Beispiel ausprobiert (mit einer jar mit /html/HTML.class und /html/Seite1.html) Ich komme nur in meiner Anwendungsklasse Main.class an die Ressource wenn ich ein "/" vor das html/Seite1.html mache.

Java:
import java.io.IOException;
import java.io.InputStream;

import html.HTML;

public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		InputStream is = HTML.class.getClassLoader().getResourceAsStream("html/Seite1.html");
		
		InputStream is3 = Main.class.getResourceAsStream("/html/Seite1.html");
		is.close();
		is3.close();
	}

}

Über den Classloader der HTML.class geht es wie du sagtest: einfach "html/Seite1.html"
Über den Classloader der Main.class (Anwenderklasse) muss es "/html/Seite1.html" heissen.

Sind das Unterschiede in der Such-Art und Weise? Einmal relativ und einmal absolut?
 
I

imho1001

Gast
Ok ich denke ich habs wieder gerafft. (Vergesse sowas immer leicht...)

Es gibt wohl Unterschiede ob ich:
MeineKlasse.class.getResourceAsStream(...) aufrufe oder ob ich:
MeineKlasse.class.getClassLoader().getResourceAsStream(...) aufrufe.

Java:
import java.io.IOException;
import java.io.InputStream;

import html.HTML;

public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		InputStream is =   HTML.class.getResourceAsStream("/html/Seite1.html");
		InputStream is2 =  HTML.class.getClassLoader().getResourceAsStream("html/Seite1.html");
		
		InputStream is3 =  Main.class.getResourceAsStream("/html/Seite1.html");
		InputStream is4 =  Main.class.getClassLoader().getResourceAsStream("html/Seite1.html");
		
		is.close();
		is2.close();
		is3.close();
		is4.close();
	}

}

Auch scheint es egal zu sein welche Klasse ich um die Resource bemühe. Kann das einer bestätigen?

Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JApplet in HTML einbetten > mehrere .class-Dateien Java Basics - Anfänger-Themen 9
L html-Dateien in tif-Dateien umwandeln Java Basics - Anfänger-Themen 9
E Vergleichen von 2 txt bzw. html-Dateien? Java Basics - Anfänger-Themen 7
B mit Runtime.getRuntime().exec auch HTML-Dateien öffnen? Java Basics - Anfänger-Themen 7
W Javadoc HTML erzeugen mit allen dependency Java Basics - Anfänger-Themen 11
M html-seite drucken (gerendert) Java Basics - Anfänger-Themen 3
I HTML Code säubern Java Basics - Anfänger-Themen 4
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
B HTML Code in XML speichern Java Basics - Anfänger-Themen 3
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
B String nach HTML formatieren Java Basics - Anfänger-Themen 9
S HTML-Quelltext hinter HTTPS Java Basics - Anfänger-Themen 1
J Input/Output Input Buttons Html mit JSP Java Basics - Anfänger-Themen 3
E HTML in Java einbinden oder JavaScript? Java Basics - Anfänger-Themen 5
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
krgewb Input/Output Umlaute in generierter HTML-Datei Java Basics - Anfänger-Themen 7
N Status-Log - HTML Java Basics - Anfänger-Themen 12
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
I Meta Tags vergleichen mit Html Vorgabe Java Basics - Anfänger-Themen 8
B HTML Code drucken Java Basics - Anfänger-Themen 4
D HTML Manipulation Navigation Java Basics - Anfänger-Themen 1
Z Html Element aus der Webseite auslesen Java Basics - Anfänger-Themen 1
D Erste Schritte HTML aus JEditorPane drucken Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
M Java und Html Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
T Ausgabe in HTML :( Java Basics - Anfänger-Themen 19
F HTML Datei in .jar speichern und abändern Java Basics - Anfänger-Themen 2
S mit Java HTML Button drücken "lassen" Java Basics - Anfänger-Themen 8
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
T HTML-Inputbox ansteuern Java Basics - Anfänger-Themen 4
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
I HTML in String wandeln? Java Basics - Anfänger-Themen 1
D javacode durch Html ausfuehren Java Basics - Anfänger-Themen 13
W HTML Code, Umlaute werden nicht richtig dargestellt Java Basics - Anfänger-Themen 7
C Html in einem JEditorPane anzeigen Java Basics - Anfänger-Themen 2
I jar-Datei in HTML einbinden Java Basics - Anfänger-Themen 6
O HTML -> BBCode Parser? Java Basics - Anfänger-Themen 3
O Methode in andere Klasse verlegt, "auslesen" einer HTML Seite verschnellert - Problem. Java Basics - Anfänger-Themen 4
V Umlaute beim Parsen einer HTML Seite Java Basics - Anfänger-Themen 4
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Methode um eine HTML-Datei zu öffnen Java Basics - Anfänger-Themen 10
H Schnell HTML-Tags finden Java Basics - Anfänger-Themen 5
H Welcher Html-Parser? Java Basics - Anfänger-Themen 8
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
J Html zugriff - POST Request/Response Java Basics - Anfänger-Themen 4
A HTML-Code auslesen und mit einem Wert in der property-Datei vergleichen Java Basics - Anfänger-Themen 2
Z Input/Output HTML-Seite einlesen Java Basics - Anfänger-Themen 4
H Interface JTextPane html formatiert kopieren Java Basics - Anfänger-Themen 2
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
D Wie den HTML-Teil des Chat Tutorials aus dem FAQ-Bereich starten? Java Basics - Anfänger-Themen 5
C Link wie bei HTML Java Basics - Anfänger-Themen 7
F Methoden replaceAll (regex) HTML Java Basics - Anfänger-Themen 3
M Mit Java eine HTML-Seite speichern Java Basics - Anfänger-Themen 11
C Java in HTML einbinden Java Basics - Anfänger-Themen 2
N Website HTML mit JavaScript abrufen Java Basics - Anfänger-Themen 9
R JSON - Ausgabe als HTML mit gson Java Basics - Anfänger-Themen 6
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
A JEditorPane + html -> java.io.IOException: invalid url Java Basics - Anfänger-Themen 4
S Lightbox Script vs. Taco HTML Script Java Basics - Anfänger-Themen 4
R Pattern bzw. Regex HTML-Code Java Basics - Anfänger-Themen 10
S String mit ASCII/HTML Zeichen darstellen Java Basics - Anfänger-Themen 10
S HTML Regularer Expression Java Basics - Anfänger-Themen 20
S regulärer Ausdruck HTML Java Basics - Anfänger-Themen 5
D Html Formular auswerten Java Basics - Anfänger-Themen 8
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
eLogic Einlesen von HTML-Source Java Basics - Anfänger-Themen 6
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
H html-Text mit Formatierung in String speichern Java Basics - Anfänger-Themen 4
S Java und HTML- Drop Down- Mehrfachauswahl Java Basics - Anfänger-Themen 3
A execute jar from html Java Basics - Anfänger-Themen 6
D Interpreter-Fehler JavaApplet läuft in der IDE aber nicht im HTML Dokument Java Basics - Anfänger-Themen 9
StupidAttack Html Code durchsuchen Java Basics - Anfänger-Themen 2
T Servlet HTML-Formular Java Basics - Anfänger-Themen 9
TheKing HTML Formular mit Java ausfüllen und absenden Java Basics - Anfänger-Themen 9
P HTML <input> Feld in einem JLabel auslesen Java Basics - Anfänger-Themen 4
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
V javascript und HTML: hoch 2 Java Basics - Anfänger-Themen 2
M index.html fehlt Java Basics - Anfänger-Themen 12
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
Weltall 7 Applet in HTML einbinden Java Basics - Anfänger-Themen 3
A Java in Html einbinden Java Basics - Anfänger-Themen 2
M Frage zum Aufruf eines Applets aus einer HTML - Datei Java Basics - Anfänger-Themen 3
D HTML Text von jButton disablen Java Basics - Anfänger-Themen 2
I CSV Datei auf HTML Seite hochladen und in DB laden Java Basics - Anfänger-Themen 9
K html to pdf Java Basics - Anfänger-Themen 6
D String aus Html (sonderfall) Java Basics - Anfänger-Themen 9
F html editor Java Basics - Anfänger-Themen 5
A html parser Java Basics - Anfänger-Themen 5
G HTML Seite generieren Java Basics - Anfänger-Themen 2
S Text aus HTML Datei in TXT Datei Java Basics - Anfänger-Themen 19
U HTML-String zusammenbauen Java Basics - Anfänger-Themen 4
P Datentypen HTML Dokument speichern (Netbeans) Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben