Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

JAR-File erstellen mit Text-Konfigurationsdatei

Empfohlene Antworten

Veröffentlicht

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();

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

    }

  }


}

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.