HSQL problem jar erstellung

  • Themenstarter Themenstarter Der_Raser
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

Der_Raser

Gast
Hallo,
ich habe mein Projekt mit eclipse als .jar exportiert.
Da ich im Build path ja die hsqld.jar angegeben hab, habs ich mit fatjar exportiert.

Somit bekomm ich beim starten zwar ne verbindung zur datenbank, kann aber nix einfügen
oder etwas aus der datenbank lesen.

Die Pfadangabe bei der Connection hab ich relativ

Code:
con = DriverManager.getConnection("jdbc:hsqldb:file:ressources/mciDB/mci", "sa", "");

Wenn die Pfadangabe absolut ist, funktioniert alles perfekt.

Allerdings weiß ich später nicht in welchem Ordner die jar sein wird,
deshalb sollte es schon relativ sein.

Weiss einer wie ich das richtig an laufen krieg ?
 
Eine Möglichkeit wäre es zur Laufzeit herauszufinden wo deine .jar liegt. Damit hättest du mal das Directory und von dem kannst dann weiter (relativ) gehen. So mache ich das.

Dazu gabs schon einige Themen. Such mal nach jar und verzeichnis...
 
also, ich wollte das problem jetzt so lösen:

da es ja mit absoluter pfadangabe geht
Code:
con = DriverManager.getConnection("jdbc:hsqldb:file:d:/Programme/eclipse/workspace/mci/database/mciDB/mci", "sa", "");

hatt ich mir ma ganz schlau gedacht, ich hol mir über

Code:
String path = System.getProperty("user.dir") + "/database/mciDB/mci";

den pfad zur jar datei.
In path dürfte ja dann auch der absolute pfad drinstehn.

Wenn ich das nun als jar exportiere, funktioniert es aber trotzdem nicht, obwohl
es wenn ich den pfad direkt absolut angeb ja geht.

Achja,
wenn ich dir jar in der Kosole ausführe, mit
Code:
java -jar mci.jar
geht es wieder

Versteht das irgendwie nit so ganz
 
Da muss man aufpassen, user.dir steht soviel ich weiss für das Verzeichnis, aus dem java -jar foobar.jar aufgerufen wurde. Möglicherweise haust du auch sonst irgendwo noch einen Wurm rein...
 
Das user.home Verzeichnis ist dafür besser geeignet. Bei Vista und auch bei Linux (je nach Konfiguration) kriegst
du Probleme in das Programmverzeichnis zu schreiben. Bei Vista z.B. sind dazu Administrator-Rechte nötig.
Klartext: Die Datenbank ist in einem Unterverzeichnis des user.home-Verzeichnises besser aufgehoben.
 
Ja oder er holt sich das directory wo die jar drinliegt, und geht in seinem Programm von dort aus relativ weiter. So mach ich es derzeit, weiss aber nicht, ob es das optimale ist. Bis jetzt funktionierts ganz gut.
 
@xote
Klar, nur wenn du das Programm unter, sagen wir mal "c:\Program Files (x86)", unter Vista installierst und aus
deinem Programm heraus in diesem Verzeichnis zu schreiben versuchst, kickt dir Vista die Anwendung aus dem
Speicher, wenn du sie nicht als Administrator ausgeführt hast oder die Anwenderkontensteuerung von Vista
deaktiviert hast (nicht empfehlenswert). Das User-Verzeichnis ist dagegen frei für Müll jeglicher Art. Auch unter
Linux/Unix empfiehlt es sich "in das gleiche" user.home Verzeichnis zu schreiben. Einfach in ein Verzeichnis
Code:
File dir = new File(String.format("%s/.%s", System.getProperty("user.home"), "anwendungsname"));
schreiben und gut ist. Du brauchst dir dann auch keine Gedanken über relative Pfade oder den Installationspfad
der Anwendung zu machen.
 
Guter Einwand, semi. In das directory muss man natürlich schreiben dürfen. Das mit Vista ist tatsächlich ein Problem. Ich muss zugeben ich selbst programmiere fast nur unter Linux und XP. Da hatte ich bis jetzt (fast) keine Probleme mit Schreibrechten.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben