Frage zu getClassLoader().getResource(FILE_NAME) !!

Loki2

Erfahrenes Mitglied
Hallo

Ich habe ein ganz konfuses Problem welches ich absolut nicht verstehe, ich hoffe ihr könnt mir weiterhelfen.

Mein Programm erstellt an einer Stelle eine Datei im Ordner "bin/xml/gui.xml"

Diese Datei wird auch sauber erstellt. An einer anderen Stelle wird die Datei folgendermaßen wieder eingelesen:

Code:
(new SwingEngine(this)).render(this.getClass().getClassLoader()
                  .getResource(FILE_NAME));

Damit es aus Eclipse funktioniert muss

Code:
String FILE_NAME = "xml/gui.xml";
sein. Also ohne die Angabe von "bin/" Das begreif ich schon mal nicht.Warum muss beim Filewriter das "bin" mit angegeben werden und beim Classloader nicht

Code:
FileWriter resultXML = new FileWriter("bin/xml/gui.xml");
Wenn ich dann ein JAR File davon baue funktioniert es gar nicht mehr. Also die Datei wird immer noch korrekt angelegt aber der Classloader kann die Ressource nicht einlesen. Wieso nicht :confused: :confused:

Ich hoffe ich konnte mein Problem halbwegs verständlich erklären und ihr könnt mir weiterhelfen denn damit komme ich gar nicht mehr weiter :mad:

Gruß und so
Loki2
 
Hallo!

Die getResource(...) Methode eines ClassLoaders sucht standardmäßig im Classpath der Java Anwendung. Unter Eclipse ist das bin Verzeichnis Classpath...
Der FileWriter hingegen sucht (wenn ein relativer Pfad angegeben wurde) abhängig vom Root Verzeichnis der Anwendung.

Gruß Tom
 
Nabend und Danke für die Antwort.

Allerdings weiss ich jetzt nicht wie ich das Problem beheben kann?

Ich lese auf die Art und Weise eine XML Datei für SwiXml ein aus dem eine GUI erstellt wird.
Gibt es eine andere Möglichkeit damit auch der Classloader aus dem Root der Anwendung liest? Irgendwie muss ich SwiXml halt dieses Gui.xml File geben...

:confused:

Gruß und so
Loki2
 
Hallo,

ok ich habe die Lösung gefunden. Ich lese das File jetzt folgendermaßen ein:

Code:
swix = new SwingEngine(this);
    try {
        swix.render(new File(UI_DEF_FILE_NAME));
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Gruß und so
Loki2
 
Zurück