Startmenü und user.dir

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo Zusammen,

ich speichere meine Datenbanken im user.dir-Verzeichnis. Wenn ich die jar-Datei direkt aufrufe, kein Problem. Aber wenn ich mir eine Verknüpfung auf die jar-Datei anlegen (im Startmenü) findet er die Datenbank nicht. Das Problem ist, dass er beim Aufrufen über die Verknüpfung als User.dir Dokumente und Einstellungen\... verwendet. Wie kann ich das problem umgehen?

Danke
 

The_S

Top Contributor
user.dir ist immer das aktuelle Verzeichnis, aus dem das Programm gerade ausgeführt wird. Wenn du es vom Startmenü aus aufrufst ist also das Verzeichnis des Startmenüs dein aktuelles Verzeichnis!
 
G

Gast

Gast
Dann kann ich ja niemals meine Datenbank im Programmverzeichnis speichern, da ich diese ja dann unter Umständen nicht wiederfinde. :cry:
 

The_S

Top Contributor
Naja, du kannst ja einen anderen, gleichbleibenden Pfad nehmen, wie z. B. user.home. Oder du liest aus, wo sich deine Klasse/dein JAR-File momentan befindet.
 
G

Gast

Gast
Hm, also doch lieber ins user.home und dann natürlich .anwendungsname.

Wie würde ich das mit der Klassenpfadermittlung machen? Wie machen andere das mit Ihrem Datenbanken? Wenn man sich Programm anschaut, legen die die Datenbanken meistens im Programmverzeichnis ab.

Gruß
 

The_S

Top Contributor
Das kannst du prinzipiell machen wie du möchtest, nur wiederfinden musstes ;) . Ich hab mir mal für ein größeres Projekt eine Installationsroutine geschrieben und dann den Pfad für die Installation beim Kopieren in das Main-Jar mitreinkopiert.
 
G

Guest

Gast
Hm, bei meiner Installationsroutine lege ich den Programmpfad in der Registry ab. Da könnte ich ihn natürlich auch wieder rausnehmen.

Ach, jetzt muss ich überlegen user.home, Pfad aus der Registry oder anderer Weg?

Gruß
 

Wildcard

Top Contributor
Warum regestry? Einfach im PreferenceStore ablegen, dann funktioniert es nicht nur auf Windows :roll:
 
G

Gast

Gast
Hm...also nochmal die Überlegungen

den Datenbankpfad im PreferenceStore abzulegen ist nicht schlecht, aber dazu muss ich im ersten Schritt wissen, wo dieser sich befindet.

Okay, die erste Idee wäre beim Starten des Programmes den PreferenceStore abzufragen, ob bereits ein Pfad hinterlegt ist?
Wenn ja alles klar, wenn nein, ist die Datenbank noch nicht angelegt worden.

So wenn ich eine Connection zu hsqldb aufbaue und er keine Datenbank findet, legt er diese ja automatisch an. (Gibts eigentlich nicht MöglichKeit,
die Existents einer Datenbank nur zu prüfen und nicht gleich durch den Connectionversuch automatisch zu erstellen?) Das heisst ich muss vor der
Connection den Pfad mitgeben. Bei Windowssystemen nicht das Problem, da mein Installer den Installationspfad in der Registry speichert.
Kann ich also übernehmen. Und bei Mac bzw. Linux könnte ich theoretisch einen Dialog einblenden, nach dem Motto, wo soll die Datenbank
gespeichert werden. Hm.......

Ich könnte natürlich auch der Idee von Hobbit folgen und den Pfad der Klasse ermitteln lassen. (Siehe Hobbits Link.)

Also, wäre doch die Idee die Datenbank im user.home und .anwendungsdaten\Programme abzulegen die Einfachste und Effektivste, oder ?
Plattformunabhänig, Megaleicht zu implementieren... Wo legt ihr den Eurer Datenbanken ab?

Danke

Ps.: Wie muss man die Pfadangaben eigentlich nochmal machen, um plattformunabhänig zu bleiben Verzeichnis\Verzeichnis ocer Verzeichnis/Verzeichnis/?
 

The_S

Top Contributor
Überprüf doch einfach ob deine DB-Datei existiert, dann weißt du auch, ob deine DB schon angelegt wurde oder nicht.

Meistens habe ich Datenbanken auf einem Server liegen und ich connecte mich darauf. Wenn ich lokal eine verwende, dann entweder Durch den User bei der Installation den Pfad festlegen lassen, in user.home oder eben durch auslesen des Ortes der Klasse. Am einfachsten ist aber ohne Frage die user.home Methode.

Der Plattformunabhängig Pfad-Trenner ist ein normaler Slash / . Spielt aber keine Rolle, da Java das automatisch konvertiert. Alternativ kannst du anstelle von / oder \ auch einfach System.getProperty("file.separator"); verwenden.
 
G

Gast

Gast
Ja ganz Klasse :applaus: :applaus:

Wieso bin ich nicht auf die simple Idee gekommen, einfach das Datenbank-File zu prüfen. Wenn da, dann DB schon angelegt, sonst nicht. Oh man, das gibt es nicht. :roll:

Danke

Ps.: Ich nehme jetzt einfach user.home. Es ist einfach zu implementieren und auf alle Systemen vorhanden. Wo wird soetwas eigentlich bei MAc bzw. Linux abgelegt. Bei Win kein Thema, da kommt der normale User nicht hin. Aber bei den anderen BS?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
JD_1998 Vektorrechner; User Input -> Index out of bounds Java Basics - Anfänger-Themen 3
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
C Wie kann ich einen User Input mit einer If-Anweisung verbinden? Java Basics - Anfänger-Themen 5
I gemeinsame Config-Datei für alle Windows-User Java Basics - Anfänger-Themen 5
J Dateien für anderen User "mitgeben" Java Basics - Anfänger-Themen 1
M "Per-User"-Variable Java Basics - Anfänger-Themen 2
P Ein Array mit der Eingaber der User füllen und ausgeben Java Basics - Anfänger-Themen 6
Z User/passwort eingabe...Help! Java Basics - Anfänger-Themen 4
J Array manuell vom User eingeben, Zeilenweise Java Basics - Anfänger-Themen 2
R User Input wird übersprungen?! Java Basics - Anfänger-Themen 17
N User Eingabe mit Zeile aus TextFile vergleichen Java Basics - Anfänger-Themen 13
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
D User - Interface über die Console Java Basics - Anfänger-Themen 14
N User wechseln? Java Basics - Anfänger-Themen 3
3 User erstellen / Oracle Content DB Java Basics - Anfänger-Themen 2
P System.getProperty("user.dir") beeinflussen Java Basics - Anfänger-Themen 3
kulturfenster User soll Radius von Kugel bestimmen Java Basics - Anfänger-Themen 4
K User Aktivität überwachen Java Basics - Anfänger-Themen 9
I User anlegen und Sytempfade zuordnen Java Basics - Anfänger-Themen 4
I Wie kann man in root -User wechseln? Java Basics - Anfänger-Themen 16
S Windows User != Server User auslesen Java Basics - Anfänger-Themen 19
H Dienst beenden als normaler User Java Basics - Anfänger-Themen 3
X Property user.name über Konsole verändern Java Basics - Anfänger-Themen 6
M JTable Zellen für User sperren Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben