Feste Hardcodierte Pfade im Quellcode

Nina90

Mitglied
Hallo liebe Java-Communitiy,

ich benutze in meinem Programm eine lokale Embedded Datenbank.
Bisher wähle ich die DB mit einem Filechooser aus, nun möchte ich den Ort der DB im Programm fest eintragen(beim Neustart des Programms soll der DB-Ort bekannt sein).

Da ich das ganze später als ausführbare .jar benutzen wollte, sollte sich die Datenbank in einem Unterordner des Ordners der jar Datei befinden.

Nun habe ich schon das Forum und andere Seiten durchsucht und weiß immernoch nicht wie ich das anstellen soll. ;(

Das mit dem Deployment habe ich nun so gelöst, daß die Datenbank in ein package gepackt wird und das als Unterpackage der Anwendung mit gepackt wird.

Ich kann das ganze aber nicht testen da ich für das erste Problem mit dem hardcodieren immer noch keine Lösung habe :(

Wie kann ich den jetzt meiner GUI-Klasse mitteilen daß der DB-Pfad sich auf das Package "meinpackageDB" bezieht??
Sowas wie in Unix mit cd ../ wäre optimal aber hat bisher leider nicht funktioniert.

Die Struktur meiner Anwendung sieht so aus:
src
|-
-'- [meinpackageGUI]
------|- MeineGUIKlasse.java
------'- WeitereGUIKlasse.java
---'[meinpackageAnwendung]
------|- MeineAnwendungKlasse.java
------'- WeitereAnwendungKlasse.java
---'[meinpackageDB]
--------|- Datenbank.sql
---'[Symbole]
---------|- New.gif
---------'- Open.gif

Über einen Tipp oder konkreten Hinweis wäre ich sehr dankbar.

Eure Nina
 

Guybrush Threepwood

Top Contributor
Du kannst nicht von einem Program aus in die eigene, zur Zeit geöffnete Jar-Datei schreiben. Die Datenbank könnte also nur Read-Only sein. Trifft das bei Dir zu, oder sollen Daten auch geschrieben werden können?
 
G

Gastredner

Gast
Da ich das ganze später als ausführbare .jar benutzen wollte, sollte sich die Datenbank in einem Unterordner des Ordners der jar Datei befinden.
Kein Problem. Angenommen, das Jar liegt in dem Ordner prog und die Datenbank in prog/db, dann kannst du ein entsprechendes File-Objekt mit relativem Pfad anlegen und über dieses dann weiterverwenden:
Java:
File db = new File("db/database.sql");
File arbeitet mit relativen Pfaden, also Pfaden, die ausgehend vom aktuellen Arbeitsverzeichnis abgebildet werden. Führst du dein Programm also im Ordner prog aus, sollte die Datei so gefunden werden.
 

Nina90

Mitglied
Hallo,
vielen lieben Dank für die zahlreichen Antworten.
Der erste Teil des Problems ist gelöst, ich muss nun keinen Filechooser mehr öffnen sondern setze den Datenbankpfad direkt im Code so wie es Gastredner vorgeschlagen hat:
Kein Problem. Angenommen, das Jar liegt in dem Ordner prog und die Datenbank in prog/db, dann kannst du ein entsprechendes File-Objekt mit relativem Pfad anlegen und über dieses dann weiterverwenden:
Java:
File db = new File("db/database.sql");


Beim zweiten Teil des Problems bin ich noch nicht weiter gekommen.
Du kannst nicht von einem Program aus in die eigene, zur Zeit geöffnete Jar-Datei schreiben. Die Datenbank könnte also nur Read-Only sein. Trifft das bei Dir zu, oder sollen Daten auch geschrieben werden können?
Das weiß ich und genau das wollte ich auch nicht, sondern aus meiner jar auf eine Datenbank zugreifen die nicht im jar sondern im Unterordner des jar-Ordners steckt.
In die DB soll auch geschrieben werden, aber da sie im Unterordner liegt und nicht in der jar sollte das doch kein Problem sein oder?

Wenn ich das jar nun erstelle läuft zwar die Anwendung aber die Datenbank wird nicht gefunden :(

Wie muss ich die jar erstellen damit sie beim ausführen auf die DB im Unterordner zugreifen kann?

Vielen Dank nochmals für die Antworten,
Eure Nina
 
G

Gastredner

Gast
Wenn ich das jar nun erstelle läuft zwar die Anwendung aber die Datenbank wird nicht gefunden :(
Dann solltest du deine Verzeichnisstruktur und die Pfadangaben / JDBC-URLs überprüfen, ob diese auf den korrekten Ort verweisen. Solange deine Datenbank nicht in deinem Jar liegt, sollte der Zugriff kein Problem sein.

Du kannst auch
Java:
System.getProperty("user.dir")
voran stellen, dann stehst in dem Ordner in dem die jar liegt
Nein, du landest im Arbeitsverzeichnis des aktuellen Nutzers. Dies ist zumeist das Verzeichnis, in welchem das Jar liegt, muss es aber nicht zwangsläufig sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Feste Reihenfolge von dem Ablauf von Methoden Java Basics - Anfänger-Themen 7
M JComboBox feste double Werte zu ordnen Java Basics - Anfänger-Themen 8
Z ArrayList direkt feste Größe mitgeben Java Basics - Anfänger-Themen 13
M Feste Größe des JFrames - Problem mit Dimension Java Basics - Anfänger-Themen 6
D Klassen Feste und veränderbare Typen in Hierarchien Java Basics - Anfänger-Themen 5
T JSpinner feste Spaltenbreite? Java Basics - Anfänger-Themen 3
G Feste Fenstergröße? Java Basics - Anfänger-Themen 4
G Keine feste Länge bei Objekten, warum nur Zeiger? Java Basics - Anfänger-Themen 8
G JLabel feste größe geben!? Java Basics - Anfänger-Themen 3
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
I Alle Laufwerke und deres Pfade ausgeben Java Basics - Anfänger-Themen 6
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
O Absolute Pfade in mehrere Klassen verwenden Java Basics - Anfänger-Themen 3
L Manifest und absolute Pfade Java Basics - Anfänger-Themen 5
S Variable Pfade Java Basics - Anfänger-Themen 14
M Pfade in Tree einbinden Java Basics - Anfänger-Themen 2
J Icons. und. Pfade Java Basics - Anfänger-Themen 3
N Java wird nicht ausgeführt obwohl nötige Pfade gesetzt sind Java Basics - Anfänger-Themen 5
G Servlets: Erwartete/Angelegte Pfade von Tomcat/Eclipse Java Basics - Anfänger-Themen 2
A Unterschiedliche Pfade je nach OS? Java Basics - Anfänger-Themen 4
L Dateien im Netzwerk bearbeiten (UNC-Pfade und gemappte Laufw Java Basics - Anfänger-Themen 5
A Reguläre Ausdrücke der Pfade unter Windows und Unix Java Basics - Anfänger-Themen 3
J relative pfade windows/unix Java Basics - Anfänger-Themen 12
F Relative Pfade zu Fenster-Icon in Main-Methode? Java Basics - Anfänger-Themen 7
V filereader soll aus config.txt pfade lesen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben