nach dem Ordner suchen, wo .jar datei sich befindet

endidu

Mitglied
Hallo,

in meinem Programm speichere ich in einem Ordner unter C:\Dokumente und Einstellungen\Username.. temporäre Datein. Aber wenn sich ein anderer User anmeldet, ist dieser Ordner für ihn nicht sichtbar. Oder wenn mein Programm in einem anderem Rechner läuft usw..

Also ich möchte jetzt da ein Temp-Ordner erstellen, wo sich .jar Datei meiner Applikation befindet. Also muss ich erstmal suchen, wo die .jar Datei liegt. Wie schaffe ich das? Mit File.list() kann es glaube ich lange dauern. Gibt es eine einfache Lösung? Oder bessere Ideen?

Danke im Voraus,
Grüße..
 
M

maki

Gast
Versuche mal
Java:
System.out.println(getClass().getProtectionDomain().getCodeSource().
   getLocation().toString());
 

TiME-SPLiNTER

Aktives Mitglied
Für was musst du das wissen? Du kannst ja relative Pfade nutzen. [c]File cfgDir = new File("cfg");[/c] wäre dann folgendes::

Code:
[File] meinejar.jar
[Dir] cfg
 

endidu

Mitglied
Danke für die blitzschnelle Antworten,

Versuche mal
Java:
System.out.println(getClass().getProtectionDomain().getCodeSource().
   getLocation().toString());

Diese Zeile gibt den Pfad aus, wo mein codesource/bin Ordner ligt. Durch diese Zeile
Java:
new File(getClass().getProtectionDomain().getCodeSource(). getLocation().getPath(), "TempTest.log");
sollte nicht ein TempTest.log in dem bin-Ordner erzeugt werden? Ich kriege es aber nicht..


Ich entschuldige mich, aber ich habe nicht ganz verstanden, was du damit meinst..Kannst du vielleicht noch bischen mehr erklären? ich bin relativ neuling in solchen Sachen.
 

L-ectron-X

Gesperrter Benutzer
Probiere mal
Code:
System.getProperty("user.dir");
Mehr Informationen in der Doku der Klasse [japi]System[/japi].
 

endidu

Mitglied
Java:
File f=new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath(),
"TempTest.log");
	if(!f.exists())
		try {
			f.createNewFile();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
damit habe ich es gelöst..Aber ich dachte, es geht auch ohne createNewFile()..

naja wollte jetzt fragen, ob das mein Problem so gelöst wurde.. Also wenn ich ein jar datei erzeuge, wird es auf den verschiedenen Rechner problemlos laufen?

PS: mein Programm wird eigentlich nur unter Windows laufen.
 
M

maki

Gast
Probier es als Jar aus, sollte imho laufen, ausser es handelt sich um ein Managed Environment wie einen AppServer.
 
G

Gastredner

Gast
Beachte außerdem, dass du womöglich bei Windows Vista/7 Administratorrechte benötigst, wenn du das .jar unter C:\Program Files ablegst.
 
S

Spacerat

Gast
In vielen Fällen ist das Verzeichnis, in welchem sich das Jar-Archiv befindet, das aktuelle Verzeichnis. Was spricht also dagegen, diese temporären Dateien im aktuellen Pfad anzulegen?
Java:
File current = new File(".").getAbsoluteFile();
 
M

maki

Gast
Das sog. "current directory" kann variieren, je nachdem wie die App gestartet wurde, mit meiner Methode bekommt man den Pfad zum Code/Jar, falls es die Berechtigungen zulassen.
 

endidu

Mitglied
Das hab ich in meinen Post (Nr. 3) gemeint :).

Danke jetzt habe ich es verstanden:) aber noch eine Frage? Gibt es einen Unterschied zwischen den folgenden beiden Zeilen?

Java:
File f = new File("Temp");

und

Java:
File f = new File(System.getProperty("user.dir") + "\\Temp");
die beide Zeilen erzeugen ja im codesource Ordner das Ordner "Temp".

oder wenn ich versuche, was maki vorgeschlagen hat, erzeuge ich im codesource/bin das Temp Ordner :
Java:
File f=new File(getClass().getProtectionDomain().getCodeSource().
				   getLocation().getPath()+"\\Temp");

Also welche ist sicherer? wenn alle ungefähr gleich sind, würde ich dann gerne den relativen Pfad benutzen.
 
Zuletzt bearbeitet:

mabuhay

Bekanntes Mitglied
Ich glaube die Diskussion gab es schon ein paar mal, und dabei ist herausgekommen das es nicht so einfach ist. Wie maki sagt, kommt es darauf an wie die .jar gestartet wurde.

z.B. die .jar liegt in /user/test/irgendwas/meine.jar

Starten aus dem Ordner /user/test/ mit java -jar irgendwas/meine.jar
gibt einen anderen Pfad zurück als
starten aus /user/test/irgendwas/ mit java -jar meine.jar

oder?

Ein paar links:
http://www.java-forum.org/java-basics-anfaenger-themen/100564-projekt-ordner-pfad-ermitteln.html
http://www.java-forum.org/java-basics-anfaenger-themen/100184-aktueller-pfad-programms-jar-ermitteln.html
http://www.java-forum.org/allgemeine-java-themen/99655-speichern-einstellungen.html

mfg
 
Zuletzt bearbeitet:

endidu

Mitglied
Ich glaube die Diskussion gab es schon ein paar mal, und dabei ist herausgekommen das es nicht so einfach ist. Wie maki sagt, kommt es darauf an wie die .jar gestartet wurde.

danke schön. Ich habe die Links gereade gelesen..und sehe jetzt, dass es komplizierter ist als ich gedacht habe..

Vielleicht muss ich mal erklären, wieso ich sowas brauche.. Also in meinem Programm lese ich ständig Messwerte von einem Hardware, die temporär gespeichert werden. Ich möchte diesen Temp-Ordner so wählen, dass die .jar Datei (beim .jar erzeugen bin ich auch ganz neuling, werde aber noch lernen) meiner Applikation unter Windows auf verschieden Rechner problemlos läuft. Also Users mit verschiedenen Zugriffsrechten müssen alle Files in dem Temp-Ordner sehen können, d.h. Temp-Ordner muss für jeden sichtbar sein. Vielleich habt Ihr andere Ideen..

mfG
 

mabuhay

Bekanntes Mitglied
Also wenn du den Temp-Ordner im gleichen Verzeichnis wie die jar-Datei haben willst, dann müssen ja alle Benutzer auch schon auf diesen Ordner mit der jar-Datei zugreifen können. Wo wäre das dann in deinem Fall?

Du sprichst auch von einem Temporären Ordner. Heisst das, dass die Messdaten dann wieder gelöscht werden? (bei Programmende, oder wenn das System ausgeschaltet wird?)

Ich habe bemerkt, dass es in jedem Fall besser ist das Verzeichnis vom Benutzer auswählen zu lassen. Konfigurationsdateien etc sollten natürlich an den richtigen Platz (home-Verzeichnis bei linux und AppData oder wasauchimmer bei Win), aber für Daten sollte der Benutzer auswählen können. Evtl sollten die Messdaten ja auch auf ein Netzlaufwerk damit sie von anderen Benutzern gesehen werden können. Und wenn jemand das Programm benutzt ist es evtl ein kleiner Mehraufwand den Pfad anzugeben, der Pfad kann dann aber gespeichert werden. Auf jeden Fall ist das Programm dann viel flexibler.

mfg
 
S

Spacerat

Gast
Zusammengefasst: Das Programm liest Daten einer Hardware und soll diese für mehrere Benutzer, möglicherweise auch noch gleichzeitig zur Verfügung stellen? Also, wenn das so ist, kann das Programm bisher möglicherweise eh nur einmal gestartet werden, sofern die Hardware nicht multiinstanzfähig (z.B. COM-Ports) ist.
Ich würde mir in diesem Fall eine Server-Client-Lösung mit JDBC einfallen lassen, in welcher der Server auf die HW zugreift und seine Ergebnisse in JDBC speichert, wo diese dann von mehreren Benutzern gleichzeitig gelesen werden können. In JDBC kann man entweder seine eigene Datenbank realisieren oder auf eine bereits vorhandene zurückgreifen. Fakt bleibt auf jeden Fall, dass die einzelnen Benutzer keine Schreib-Lese-Rechte mehr auf irgendwelche Verzeichnisse benötigen.
 

Empire Phoenix

Top Contributor
Temp werte? Hm frag doch einfach per System.getProperty() nach dem temp folder des Os, bei windos zb C:/windows/temp (je nach Version) Kann ja in dem Fall egal sein, wenns nur temporär ist und hätte den vorteil das Datenträgerbereingung ect die Daten finden würden.
 

endidu

Mitglied
Also wenn du den Temp-Ordner im gleichen Verzeichnis wie die jar-Datei haben willst, dann müssen ja alle Benutzer auch schon auf diesen Ordner mit der jar-Datei zugreifen können. Wo wäre das dann in deinem Fall?

Du sprichst auch von einem Temporären Ordner. Heisst das, dass die Messdaten dann wieder gelöscht werden? (bei Programmende, oder wenn das System ausgeschaltet wird?)

Ich habe bemerkt, dass es in jedem Fall besser ist das Verzeichnis vom Benutzer auswählen zu lassen.

mfg

Es ist also eine grafische Oberfläche. Die Messdaten werden gelesen und aufgezeichnet. Man hat dann die Möglichkeit, die Messdaten zu speichern, um die später wieder aufzeichnen zu können.. Es kann auch durch den Benutzer selektiert werden, dass die Messdaten nach Programmende gelöscht werden. Es gibt noch ein Button, um den Temp-Ordner zu leeren.
Und der Temp-Ordner kann durch den Benutzer sowohl durch Texteingabe als auch durch JFileChooser gewählt werden. Aber in dem Fall, dass es keinen Temp-Ordner gewählt wird, soll ein Default-Temp-Ordner automatisch gewählt werden.

Dieser Default-Temp-Ordner ist meine Frage. Aber ich lasse es jetzt einfach so, wie Empire-Phoenix beschrieben hat. Kann ich oder mit meinem .jar datei noch einen Ordner irgendwie mitliefern?
Nochmal vielen Dank für alle Antworte.

mfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
M Ordner nach neuester Datei durchsuchen Allgemeine Java-Themen 4
F Alle Files im Ordner nach Dateinamen durchsuchen Allgemeine Java-Themen 28
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
Thallius Neuen Prozess starten, der auch nach Beedingung des Starter-Prozesses weiterläuft? Allgemeine Java-Themen 5
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
A Funktionen aufrufen nach Schema x Allgemeine Java-Themen 2
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
AssELAss String jeweils nach x Zeichen Zeilenumbruch Allgemeine Java-Themen 1
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
J Ausgabe nach Excel Allgemeine Java-Themen 1
K PCM_UNSIGNED nach PCM_SIGNED Allgemeine Java-Themen 0
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
L Strings nach sortiertem String zurück ordnen Allgemeine Java-Themen 0
A Java - Suche nach Datensatz mit DateChooser Allgemeine Java-Themen 0
L Strings nach gleichem Muster ordnen Allgemeine Java-Themen 4
F Nach Export wird PDF Datei nicht mehr gefunden Allgemeine Java-Themen 0
K Sortieren nach Vorgabe Allgemeine Java-Themen 6
G nervendes Problem mit unterschieden zwischen Javax64 und x86 | je nach Programmbedarf beides nötig Allgemeine Java-Themen 2
L nach form submit textfeld an java übergeben? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben