Zum Inhalt springen

JAR-File erstellen mit Text-Konfigurationsdatei


HuDeanY

Empfohlene Beiträge

Servasens,

Ich hätte da mal folgende Problemstellung:

Ich hab eine Reihe von Klassen mit einer Hauptklasse in einem Package verschachtelt.

Über dieses Package erzeuge ich eine JAR-File die sich auch wunderbar ausführen lässt mit "java -jar file.jar"

Soweit so gut.

Jetzt möchte ich in dieses JAR-File noch eine Konfigurationsdatei die aus Plain-Text besteht (evtl. später auch aus XML).

Die soll da rein, damit alles schön knuffig in dem JAR-File aufgeräumt ist und nichts zusätzliches geliefert werden müsste.

Auf diese Datei müsste nur lesend zugegriffen werden (soll Sprachinformationen deutsch english enthalten).

Jetzt hab ich es mit Eclipse geschafft dass er mir die Datei auch mit ins JAR-File packt was auch mit WinZip etc. gegangen wäre und unter Eclipse findet er die Datei auch (die übrigens ausserhalb des Packages liegt). Nur wenn ich dann das JAR-File starte findet er die KonfigurationsDatei nicht mehr. Ich denke das liegt daran, das er die ja im JAR-File packt und der Pfad zur Datei nicht mehr trivial benutzbar ist.

Für Sound und Image Dateien weis ich/hab ich gehört, daß man die einfach in das JAR-File miteinpacken kann und ungehindert nutzen (evtl noch über eine funktion namens "getResource") aber wie geht denn das mit Textdateien oder sprech ich die Datei nur falsch an im Code?

Qualified help wanted!!! plz

Der Code mit dem ich die Datei bisher anspreche sieht so aus :

BufferedReader languageFileBufferedReader = new BufferedReader(new FileReader(new File("Dateiname.ext"));

String lineOfFile = languageFileBufferedReader.readLine();

Link zu diesem Kommentar
Auf anderen Seiten teilen

new BufferedReader(new FileReader(new File("Dateiname.ext"));
Hier müsste wirklich eine Datei "Dateiname.ext" auf dem Filesystem existieren. Das tut sie aber nicht, da ja - wie du geschrieben hast - die Datei mit im JAR File inkludiert ist.

Was du also benötigst ist ein Weg um an die Resourcen innerhalb des JAR Files zu kommen. Das funktioniert über den ClassLoader.

Was du also benötigst ist folgendes


public class TestClass {


  public void doStuff() {

    ClassLoader loader = this.getClass().getClassLoader();

    URL resourceURL = loader.getResource("path/to/file/Dateiname.ext");

    if(resourceURL == null) {

      throw new IllegalArgumentException("No resource found");

    } else {

      InputStream urlStream = resourceURL.openStream();

      // Weiterverarbeiten

    }

  }


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab recht herzlich Dank für das Beispiel wird gleich verwendet ;-)

Jetzt kämpf ich dafür noch mit einem ähnlichen Problem:

Ich möchte auch die externen JAR's die ich noch verwende (zB JDOM.jar) in mein Jar einpacken.

Gerüchteweise hab ich aber gehört, dass das mal so richtig garnicht geht, sondern ich diese immer ausserhalb meines Jar's in einem Verzeichnis /lib zb bereitstellen muss.

Ist das auch euer Kenntnisstand?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...