/ / Wie greife ich auf eine Konfigurationsdatei im Jar zu? - Java, Glas

Wie greife ich auf eine Konfigurationsdatei im Jar zu? - Java, Glas

Ich benutze Flachgehäuse um Daten von flachen Dateien zu analysieren und zu laden. Dies erfordert das Laden einer Konfigurationsdatei, die Zuordnungen der Spalten der Flat-Datei speichert.

Ich habe eine Konstante, um den Speicherort der Zuordnungsdatei zu definieren:

private static final String MAPPING_FILE = "src/com/company/config/Maping.pzmap.xml";

Ich habe eine Parse (File dataFile) -Methode, die tatsächlich die Analyse durchführt:

private void parse(File dataFile) throws FileNotFoundException, SQLException {
Parser parser;

log.info("Parsing " + dataFile.getName());

FileReader mappingFileReader = new FileReader(MAPPING_FILE);
FileReader dataFileReader = new FileReader(dataFile);

parser = DefaultParserFactory.getInstance().newFixedLengthParser(mappingFileReader, dataFileReader);
parser.setHandlingShortLines(true);

DataSet dataSet = parser.parse();

//process the data
}

Wenn ich alles aufschlage und es wie ein Glas renne - es bombardiert es FileReader mappingFileReader = new FileReader(MAPPING_FILE); mit einem FileNotFoundException. Diese Datei befindet sich jedoch im Jar.

Wie komme ich dazu?

Ich habe es angeschaut diese Frage und diese Frage über den Zugriff auf Dateien in Gläsern und beide empfehlen, die Datei vorübergehend zu extrahieren. Ich möchte das aber nicht tun.

Antworten:

14 für die Antwort № 1

Wenn es in einem JAR ist, ist es im Allgemeinen keine Datei. Sie sollten die Daten mit laden Class.getResourceAsStream(String), oder etwas ähnliches.


2 für die Antwort № 2

Ich denke, es ist nur hier gelöst:

http://www.velocityreviews.com/forums/t129474-beginner-question-how-to-access-an-xml-file-inside-a-jar-without-extracting-it.html


1 für die Antwort № 3

Wenn ich mich richtig erinnere, getResourceAsStream ()kann sich je nachdem, auf welchem ​​Webserver Ihre Webanwendung installiert ist, anders verhalten, zum Beispiel kann es bei der Bereitstellung als Krieg auf einer Websphere-Instanz ein Problem sein. Aber ich bin mir nicht sicher, ob das für dich gilt.

Aber ich bin mir nicht sicher, ob Sie versuchen, das zu lösen"richtiges" Problem: Wenn es eine Konfigurationsdatei ist, bedeutet das, dass datenabhängig ist? Nicht Code-abhängig (Ihr Jar)? Wenn sich die Flat-Datei ändert, muss sich auch Ihre Konfigurationsdatei ändern, oder? , es klingt wie die config sollte anderswo besser gespeichert werden, oder sogar als ein Parameter an Ihr Glas übergeben.

Aber vielleicht habe ich dein Problem nicht verstanden ...


0 für die Antwort № 4

Verwenden Sie Apache Commons Configuration, dann können Sie XML lesen / schreiben, automatisch aktualisieren, Konfigurationsdateien im Pfad oder Jar finden, ohne viel Ärger.