XML Datei und Webstart

noxar

Mitglied
Hallo,
ich habe shcon einige Beiträge hier im Forum gelesen, die mir auch häufig weitergeholfen haben.
Jetzt sitzte ich aber vor einem Problem das ich nicht lösen kann....

Es dreht sich um folgendes:
Wir haben eine Java Applikation die über Java Webstart über einen Link im Intranet gestartet wird.
Diese Anwendung liest beim Start direkt aus einer XML Datei. Diese XML Datei liegt Normaler weise in dem Ordner C:\temp. Das klappt soweit auch ganz gut. Allerdings muss diese Datei bei dem aller ersten Start des Programms nach C:\temp kopiert werden. Dazu haben wir eine Methode geschrieben, die prüft ob es die XML schon in dem Ordner gibt, wenn nicht dann soll sie dorthin kopiert werden. Die Datei liegt im JAR-File, welches auch das ganze Programm enthält.
Starte ich die JAR-File direkt, dann kopiert er die Datei beim ersten start in das Verzeichnis C:\temp. Starte ich das Programm über die jnlp Datei, oder den Link im Intranet, so findet er die Datei nicht in dem JAR-File und kann sie folglich auch nicht kopieren.

Kann mit jemand sagen wie am einfachsten und sichersten eine XML-File aus dem JAR-File auf das Dateisystem bekomme, wenn die JAR über Webstart gestartet wurde?
Sitzte da nun schon seit ca. fünf Stunden dran.

Hier der Aktuelle Code:
Java:
 ProtectionDomain protectionDomain = this.getClass().getProtectionDomain();
        CodeSource codeSource = protectionDomain.getCodeSource();
        URL location = codeSource.getLocation();
        File fu = new File(location.getFile());
        JOptionPane.showMessageDialog(null,
            "erzeuge pfad zur jar datei: " + fu.getAbsoluteFile() + "\n" + location.getFile());
    
        String resourcePath = "data/BabyPrinter.xml";
        InputStream resourceStream = null;
        if (fu.isFile())
        {
          JOptionPane.showMessageDialog(null, "Ja es ist eien datei");
          // it's a file, so we assume it's a jar and look for our
          // resource as a JarEntry
          JarFile jar = new JarFile(fu);
          JarEntry xmlfile = jar.getJarEntry(resourcePath);

          resourceStream = jar.getInputStream(xmlfile);
        }
        else
        {
          JOptionPane.showMessageDialog(null, "keine datei, versuche pfad anzupassen");
          // it's a directory, so we just append our relative resource
          // path
          resourceStream = new FileInputStream(fu.getAbsolutePath() + "/" + resourcePath);
        }
        JOptionPane.showMessageDialog(null, "noch da?");
        File file = new File("BabyPrinter1.xml");

        DataInputStream dis = new DataInputStream(resourceStream);
        FileOutputStream fos = new FileOutputStream(file);

        int va;
        while ((va = dis.read()) != -1)
        {
          fos.write(va);
        }

        // ------------------------------------------------------------------------

        FileInputStream in = new FileInputStream(file);
        FileOutputStream out = new FileOutputStream(f);
        FileChannel inChannel = in.getChannel();
        FileChannel outChannel = out.getChannel();
        inChannel.transferTo(0, inChannel.size(), outChannel);
        if (inChannel != null)
          inChannel.close();
        if (outChannel != null)
          outChannel.close();

      }

die Message Dialoge dienen mir nur zur Fehler suche.

Hoffe mir kann jemand helfen.
Gruß noxar aka Erik
 

FArt

Top Contributor
Lies die Datei nicht aus dem Filesystem. Packe sie in ein JAR, füge das JAR dem Klassenpfad hinzu und lade sie mit dem Classloader. Dazu gibt es bereits viele Beispiele im Netz und hier im Forum (alternativ mit Property-Dateien).
 

hansmueller

Bekanntes Mitglied
Hallo,

FArt hat ganz recht. Du mußt es auf die Art machen:
Code:
this.getClass().getResource()
.

Der Hintergrund:
WebStart speichert die Jars irgendwie versteckt im Cache ab. Daher kannst du auch keinen Pfad zu der Jar ermitteln, wenn du das Progamm mit WebStart startest.

MfG
hansmueller
 

noxar

Mitglied
Das mit dem
Code:
this.getClass().getResource("BabyPrinter.xml");
ging leider auch nicht...
Der dabei herauskommende Pfad passte leider nicht so recht, wobei ich gerade nicht mehr weiß ob ich das auch mit Webstart getestet hatte..
Werde das mal nachprüfen.

Edit: wenn ich das mit
Code:
this.getClass().getResource("BabyPrinter.xml");
mache, geht es aber nichtmehr, wenn ich das Programm aus der IDE (Eclipse) oder direkt die JAR starte oder?

EDIT2: habe es gerade mal versucht die File mit
Code:
File file = new File(DBZugriff.class.getResource("BabyPrinter.xml").getFile());
zu erzeugen... mache ich das, dann kommt als Pfad folgendes dabei heraus...
Code:
http://172.20.22.130/test/BabyPrinter.jar!/data/BabyPrinter.xml
und es geht immer noch nciht...
Erkenne leider nicht was dabei mein Fehler ist..
 
Zuletzt bearbeitet:

FArt

Top Contributor
Das mit dem
Code:
this.getClass().getResource("BabyPrinter.xml");
ging leider auch nicht...
Der dabei herauskommende Pfad passte leider nicht so recht, wobei ich gerade nicht mehr weiß ob ich das auch mit Webstart getestet hatte..
Werde das mal nachprüfen.

Edit: wenn ich das mit
Code:
this.getClass().getResource("BabyPrinter.xml");
mache, geht es aber nichtmehr, wenn ich das Programm aus der IDE (Eclipse) oder direkt die JAR starte oder?

Doch, wenn die XML Datei (in JAR oder im Verzeichnis) auch im Klassenpfad zu finden ist. Mach dich mal über Klassenpfade schlau (SUN Doku, Java Insel, ...). Essentiell wichtiges Wissen!
 

FArt

Top Contributor
EDIT2: habe es gerade mal versucht die File mit
Code:
File file = new File(DBZugriff.class.getResource("BabyPrinter.xml").getFile());
zu erzeugen... mache ich das, dann kommt als Pfad folgendes dabei heraus...
Code:
http://172.20.22.130/test/BabyPrinter.jar!/data/BabyPrinter.xml
und es geht immer noch nciht...
Erkenne leider nicht was dabei mein Fehler ist..

File = Filesystem... tu das nicht...

Schmeiß Google an und die Forensuche.. nimm über den Classloader getResourceAsStream.
 

noxar

Mitglied
Hallo,
da ich am Freitag fertig werden musste, habe ich mich für eine ganz andere Lösung entschieden. Diese ist zwar naja sagen wir mal... unsauber, aber sie funktioniert. ( Habe das XML Dokument einfach statisch per Quellcode erzeugt und dann auf das Filesystem geschrieben, so hab ich mir das Lesen gespart. das is kein Problem da eh nicht Vorgesehen ist die XML zu verändern, Sie enthält nur die Default einstellungen)
Werde mir mal bei gelegenheit genauer anschauen was ihr mir geraten habt. Da ich eigentlich kein Fan von unsauerben lösungen bin.

Trotzdem danke ich euch für die Schnelle und Kompetente hilfe.

DANKE.

Gruß noxar aka Erik
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
L Best Practice Zip Datei aktualisieren Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
Hatsi09 Jar datei ausführen verursacht NumberFormatException Allgemeine Java-Themen 9
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
N Txt Datei auslesen. Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
M Probleme jar datei. Allgemeine Java-Themen 2
F Datei in String-Array einlesen Allgemeine Java-Themen 8
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
G Workupload datei mit Java Downloaden Allgemeine Java-Themen 6
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
M Java Eclipse- Datei exportieren Allgemeine Java-Themen 5
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
T Jar Datei nicht ausführbar Allgemeine Java-Themen 6
H jar-Datei mit java.exe anstatt mit javaw.exe ausführen Allgemeine Java-Themen 9
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
Javafan01 .sh datei in Java ausführen Allgemeine Java-Themen 1
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
J Ordner und Datei Struktur einer War Datei Allgemeine Java-Themen 1
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
L Weg um Datei zuzuordnen? Allgemeine Java-Themen 3
MiMa Datei kann nicht umbenannt oder verschoben werden ?? Allgemeine Java-Themen 17
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
K Erste Schritte Start einer JAR Datei 2 Wege aber einmal nicht die volle Funktionlität Allgemeine Java-Themen 20
J Datei löschen, die Leerzeichen im Pfad hat Allgemeine Java-Themen 5
Aruetiise " in Datei schreiben Allgemeine Java-Themen 2
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
The Pi NetBeans Bilder in Jar Datei werden nicht angezeigt Allgemeine Java-Themen 7
RalleYTN Audiolänge einer MP3 Datei erhalten ohne diese vollständig zu laden Allgemeine Java-Themen 15
H Jar-Datei öffnet nur teilweise Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben