Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht

amazinglife77

Mitglied
Ich habe ein kleines Programm geschrieben - funktioniert so weit gut. Nur bin ich gerade am Verzweifeln was properties angeht. Habe schon viel Zeit in Recherchen investiert - leider ohne Erfolg.
Ich habe folgendes Probelm: Das Lesen und und Schreiben von Properties funktioniert gut wenn ich es direkt in eclipse starte. Sobald ich ein JAR erzeuge, geht nur das Lesen.

prop = new Properties();

Schreiben in der Classe B (nach Button-Betätigung):
void saveConfiguration(ActionEvent e) {
try {
//set the properties value
prop.setProperty("fPathPPT", txtDirectory.getText());
prop.setProperty("fPathLogger", txtFieldPathLogger.getText());

//save properties to project root folder
prop.store(new FileOutputStream("config.properties"), null);

} catch (IOException ex) {
ex.printStackTrace();
}
dispose();
}

Lesen in der Classe A
try {
props = new Properties();
props.load(new FileInputStream("config.properties"));
fPath=props.getProperty("fPathPPT");
fPathLogger=props.getProperty("fPathLogger");
}
catch (java.io.IOException clientException) {
JOptionPane.showConfirmDialog(this, "Error: " +
clientException, "Einstellungen für FileSelectorAndLogger",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
}
; // end catch

Zwecks Debugging habe ich zwei Properties-Dateien angelegt um das Verhalten auszuprobieren, siehe Abbildung.

Wäre sehr fro wenn mir jemand helfen könnte.
Grüße, Andreas
 

Anhänge

  • Properties_Java.png
    Properties_Java.png
    106,3 KB · Aufrufe: 27
  • FileSelectorAndLogger.zip
    27,8 KB · Aufrufe: 2

amazinglife77

Mitglied
Ich habe zwei Fehlerbilder: a) Beim Ausführen der JAR-Datei am Anfang kommt die Fehler-Meldung von FileNotFoundException. Bei Schreiben der Datei kommt keine Fehlermeldung, die Property-Datei bleibt aber unverändert.
 

JStein52

Top Contributor
Hast du mal dein Filesystem abgesucht ob sie nicht an eine andere Stelle als du vermutest geschrieben wird ?

Edit: und was steht bei der Exception für ein Pfad dabei
 

amazinglife77

Mitglied
Property-Datei wurde nicht abgelegt, da das Programm nicht zu Ende ausgeführt wurde.
Nun habe ich endlich eine Lösung auf der Seite https://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running-jar-file gefunden. Ich ermittele ParentDirectory der JAR-Datei und greife darüber auf die Property-Datei. Tolle Lösung. Jar-Datei und Property-Datei werden bei mir in einem Ordner abgelegt und bleiben damit portabel... Hier noch mal der Code.

Java:
package ortner.property;

import java.util.*;
import javax.swing.JOptionPane;
import java.io.*;
import java.security.CodeSource;
import java.net.URLDecoder;

public class PropertyHandler {

    private static PropertyHandler instance = null;
    private Properties prop = null;
    private static String propertiesFileName = "config.properties";
//    private static String propertiesPath = System.getProperty("user.dir");
    private static String propertiesPath = "C:\\FileSelectorAndLogger";
    String jarParentFolder;
 
    private PropertyHandler() {
        InputStream input = null;
        try {
            jarParentFolder = getJarContainingFolder(this.getClass());
            input = new FileInputStream(jarParentFolder + "\\" + propertiesFileName);
            this.prop = new Properties();
            this.prop.load(input);
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public synchronized static PropertyHandler getInstance() {

        if (instance != null) {
            return instance;
        }
        synchronized (PropertyHandler.class) {
            if (instance == null) {
                instance = new PropertyHandler();
            }
        }
        return instance;
    }

    public String getValue(String propKey) {
        return this.prop.getProperty(propKey);
    }

    public Set<String> getAllPropertyNames() {
        return this.prop.stringPropertyNames();
    }

    public boolean containsKey(String key) {
        return this.prop.containsKey(key);
    }
     
    public void saveParamChanges(String key, String value) {
        try {
            this.prop.setProperty(key, value);
            OutputStream out = new FileOutputStream(jarParentFolder + "\\" + propertiesFileName);
            // Zeige letzte Änderungen als Kommentar im Properies File
            this.prop.store(out, "Last changes: " + key + "=" + value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public static String getJarContainingFolder(Class aclass) throws Exception {
          CodeSource codeSource = aclass.getProtectionDomain().getCodeSource();

          File jarFile;

          if (codeSource.getLocation() != null) {
            jarFile = new File(codeSource.getLocation().toURI());
          }
          else {
            String path = aclass.getResource(aclass.getSimpleName() + ".class").getPath();
            String jarFilePath = path.substring(path.indexOf(":") + 1, path.indexOf("!"));
            jarFilePath = URLDecoder.decode(jarFilePath, "UTF-8");
            jarFile = new File(jarFilePath);
          }
          return jarFile.getParentFile().getAbsolutePath();
        }
}

Java:
package ortner.property;

import javax.swing.JOptionPane;

public class PropertiesHandling {

    public static void main(String[] args) {
     
        System.out.println(PropertyHandler.getInstance().containsKey("Frucht"));
        System.out.println(PropertyHandler.getInstance().getAllPropertyNames());
        System.out.println(PropertyHandler.getInstance().containsKey("Frucht"));
        JOptionPane.showMessageDialog(null, "Frucht: " + PropertyHandler.getInstance().getValue("Frucht"));

    }

}

Danke für die Unterstützung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
A XML schreiben - lesen Java Basics - Anfänger-Themen 19
E txt Datei schreiben und lesen Java Basics - Anfänger-Themen 9
H Zeile aus Textdatei lesen und in Textfield schreiben Java Basics - Anfänger-Themen 4
D Textfile lesen/schreiben abhängig vom inhalt Java Basics - Anfänger-Themen 6
S Lesen und Schreiben von Dateien in Java Java Basics - Anfänger-Themen 11
F Unicode beim Lesen und Schreiben per java.io.* Java Basics - Anfänger-Themen 9
A Datei Lesen und Schreiben in gleichen Klasse Java Basics - Anfänger-Themen 3
S Array Daten in Binär Datei schreiben/lesen Java Basics - Anfänger-Themen 11
J Problem mit Datei lesen und schreiben Java Basics - Anfänger-Themen 8
M Datei Lesen Und Schreiben! -.- Java Basics - Anfänger-Themen 7
C Ist gleichzeitiges Lesen und Schreiben einer ArrayList möglich Java Basics - Anfänger-Themen 2
R Daten aus Datenbank lesen, verarbeiten und schreiben. Java Basics - Anfänger-Themen 1
R Sequentielle Datei lesen und schreiben Java Basics - Anfänger-Themen 5
V Performance Lesen und Schreiben aus/in Streams Java Basics - Anfänger-Themen 4
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
C lesen und schreiben Java Basics - Anfänger-Themen 24
M Textboxen lesen und schreiben! Java Basics - Anfänger-Themen 3
M Dateien lesen/schreiben und Heap Space Probleme Java Basics - Anfänger-Themen 8
T gezieltes lesen/schreiben in datei Java Basics - Anfänger-Themen 9
M lesen und schreiben aus Programm Java Basics - Anfänger-Themen 6
H Datei lesen und an bestimmter Stelle schreiben Java Basics - Anfänger-Themen 4
I Bits lesen und schreiben Java Basics - Anfänger-Themen 6
J Datei-Details /-Infos wie Kommentare, Autor lesen/schreiben Java Basics - Anfänger-Themen 2
B Datei lesen und schreiben Java Basics - Anfänger-Themen 2
R Datei erzeugen schreiben und lesen ? Java Basics - Anfänger-Themen 18
S Textdatei lesen und schreiben Java Basics - Anfänger-Themen 2
N Mehrzeilig aus Datein lesen und schreiben Java Basics - Anfänger-Themen 8
M Linked List schreiben und lesen Java Basics - Anfänger-Themen 4
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
W Timestamp lesen Java Basics - Anfänger-Themen 6
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
C Fehlermeldungen lesen Java Basics - Anfänger-Themen 2
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
T Klassen Den Wert aus Array lesen lassen Java Basics - Anfänger-Themen 12
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
G Excle datei aus resources folder finden und lesen Java Basics - Anfänger-Themen 5
J Datei aus Projektfolder lesen Java Basics - Anfänger-Themen 12
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
S Tastatur input lesen Java Basics - Anfänger-Themen 7
S Mit FileReader lesen, in ArrayList speichern Java Basics - Anfänger-Themen 4
B Aus Datei lesen Java Basics - Anfänger-Themen 23
B Aus Datei lesen Java Basics - Anfänger-Themen 0
deatzi Wert aus anderer Klasse lesen Java Basics - Anfänger-Themen 7
W Wie lasse ich meine Ausgabe nach dem Lesen verschwinden ? Java Basics - Anfänger-Themen 1
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
C Input/Output Datei aus Startverzeichnis lesen Java Basics - Anfänger-Themen 6
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
S BufferedReader nächste Zeile lesen Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
G Jar-Archiv zum Lesen einer Konfigurationsdatei Java Basics - Anfänger-Themen 9
MaxG. Input/Output Datei lesen Java Basics - Anfänger-Themen 3
Hacer Quellcode lesen Java Basics - Anfänger-Themen 13
H Aus wav-datei lesen und in neue wav-datei speichern Java Basics - Anfänger-Themen 10
N Lesen eines files mit FILES.lines Java Basics - Anfänger-Themen 11
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
R Ab einer bestimmten Zeile lesen Java Basics - Anfänger-Themen 3
P vokale konsonanten ziffern satzzeichen aus string lesen. hab kiene ahnung Java Basics - Anfänger-Themen 10
A textfeldwerte aus array lesen Java Basics - Anfänger-Themen 27
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
D Methoden Array aus Datei lesen und weitergeben? Java Basics - Anfänger-Themen 7
T 'Nix' aus Textdokument lesen Java Basics - Anfänger-Themen 11
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
E lesen csv file column by column Java Basics - Anfänger-Themen 10
G Bis zu einem bestimmten Punkt aus Datei lesen Java Basics - Anfänger-Themen 2
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
E Input/Output Property-Datei aus einer Zip lesen in in einer anderen Zip-Datei ist Java Basics - Anfänger-Themen 3
B Input/Output Scanner-Probleme bei String-Lesen Java Basics - Anfänger-Themen 3
I Properties oder Umgebungsvariablen mit ${irgendwas} lesen? Java Basics - Anfänger-Themen 2
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
G Zeile charweise lesen Java Basics - Anfänger-Themen 3
J Aus Datei lesen und ausgeben Java Basics - Anfänger-Themen 4
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
G Datei zeilenweise lesen Java Basics - Anfänger-Themen 19
M Wie sämtliche Schlüssel und Attibutwerte aus einer Propertie Datei lesen? Java Basics - Anfänger-Themen 3
S Compiler-Fehler jOpenDocument Kompelierfehler - ODS Datei lesen Java Basics - Anfänger-Themen 2
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
T BufferReader soll datei mehrmals lesen Java Basics - Anfänger-Themen 13
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
S Datei aus JAR lesen. Java Basics - Anfänger-Themen 9
G Zeilenweise lesen Java Basics - Anfänger-Themen 17
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben