Problem beim lesen einer File in JAR-File

nicog

Mitglied
Hallo Java Programmierer.

Ich habe ein kleines Problem, wie im Titel schon zu lesen ist.

Ich habe eine JAR-File in der zusätzlich in einem Unterverzeichnis eine Excel-File und in einem anderen Unterverzeichnis ein paar Bilder liegen.

Möchte ich die Bilder lesen, klappt das ohne Probleme, egal auf welchem Rechner ich die JAR ausführe.
Über: [JAVA=42]private ImageIcon bild = new ImageIcon((Wahlomat.class).getClassLoader().getResource("Bilder/bild.gif"));[/code]
funktioniert das sehr gut.

Möchte ich aber auf die Excel-File zugreifen, funktioniert das nicht mehr.
Mit dem Java-Editor und das normalen Pfadangabe: [JAVA=42]private String Excelpfad = "D:/Excel-Files/";[/code]
geht der Zugriff ohne Probleme, unter der Voraussetzung, dass die Excelfile auch dort zu finden ist.
Möchte ich aber die Excel-File in der JAR-File integriert lesen, habe ich die Probleme.

Habe schon mehreres versucht aber nur folgendes schien mir logisch:
[JAVA=42]private String Excelpfad = (Wahlomat.class).getClassLoader().getResource("Excel-Files/").toString();[/code]
, wie auch bei den Bildern.

Aber das funktioniert nicht und gibt mir eine ioFileNotFoundException zurück.

Vielleicht kann mir einer von euch weiterhelfen. Ich würde mich sehr über Post freuen.

Vielen Dank
 
Habe schon mehreres versucht aber nur folgendes schien mir logisch:
[JAVA=42]private String Excelpfad = (Wahlomat.class).getClassLoader().getResource("Excel-Files/").toString();[/code]
, wie auch bei den Bildern.
Versuchst Du damit auf einen Verzeichnispfad zu zugreifen? Ein jar enthält Einträge, aber keine Verzeichnisse.

Dateien kann man als Stream aus einem jar auslesen:
Java:
getClass().getResourceAsStream("Excel-Files/datei.xls")
 
Über den ClassLoader kannst du die Datei als InputStream lesen. Das nutzt ja bei den Bildern. Vllt kannst du mit dem InputStream in eine temporäre Datei zwischenspeichern und da kannst du dann den Byte-Strom drin ablegen, wenn die API vllt mit reinen InputStream's ein Problem hat
 
Hallo Zusammen,

danke für die Antworten.

Kann ich in JAR-Files keine Verzeichnisse integrieren, oder heißen die dort einfach anders. Meine Bilder liegen ja eigentlich im Verzeichnis "Bilder" und der Pfad wird ja auch wie ein Verzeichnispfad angegeben.

Also, in der Excel-File stehen Daten, die ich in meinem Programm nutze. Ich fülle damit Dropdown Felder. Mehrere Arbeitsblätter sind beschrieben und abhängig von verschiedenen Bedingungen werden andere Arbeitsblätterinhalte in die Dropdownboxen geladen.

Wie gesagt, die einfachste Variante ist, die Excel-Datei irgendwo auf dem Rechner abzulegen und den Pfad im Programm auf diesem Ort zu legen. Nur ist das immer umständlich, da die JAR File ja eine gewisse Portabilität gewährleisten sollte. Und wenn ich immer dran denken muss, die Excel File auf dem Rechner zu speichern, dann ist das nicht allzu gut. Zumal die Pfade ja eingestellt sind und ich nicht jedes mal das Projekt umschreiben und neu kompilieren möchte.

Würde die Methode von "DerEisteeTrinker" irgendwie funktionieren?

Ich würde mich sehr über eine Antwort freuen,
nicog
 

Neue Themen


Zurück
Oben