# Aktuelles Verzeichnis - CMD/Kommandozeilenproblem



## Sirup (15. Okt 2008)

Hallo,

erstmal hoffe ich, dass die Lösung zu diesem Problem noch nicht im Forum erklärt wurde.

Also:
Ich habe ein Kommandozeilen Tool für Windows geschrieben.  Dieses Tool erstellt ein Property File um Einstellungen etc. zu speichern und greift auch auf dieses Property File zu.

Ich möchte, dass das dieses Property File immer im selben Verzeichnis wie meine tool.exe (habe die jar in eine exe konvertiert, um sie bequem auf der Kommandozeile aus zuführen, habe sie auch die Umgebungsvariabel Path von Windows eingetragen)

Nun habe ich, dass Problem, dass ich nicht herausfinden kann, WO meine tool.exe liegt. Wie kann ich auf das aktuelle Verzeichnis zugreifen in dem die .exe/jar liegt?

So funktioniert das leider nicht, weil wenn ich von der Kommandozeile starte und jetzt z.b im Verzeichnis "C:\Dokumente und Einstellunge\Userx" bin, er mir als aktuelles Verzeichnis natürlich dieses und nicht das Verzeichnis von der tool.exe liefert.


```
String curDir = System.getProperty("user.dir");
        File file = new File("" + curDir + "\\prop.properties");
```

Hat jemand eine Idee?

Vielen Dank,  bereits im vorraus!


----------



## The_S (16. Okt 2008)

http://www.java-forum.org/de/viewtopic.php?t=34379&highlight=verzeichnis+klasse


----------



## CK (16. Okt 2008)

Wenn du deine exe nur als Starter für den jar benutzt, würde ich dir empfehlen die Dateien als Resource aus dem Jar zu laden.


----------



## The_S (16. Okt 2008)

properties sind doch dazu da verändert zu werden ???:L . Wenn die im Jar liegen, können sie nicht mehr verändert werden.


----------



## FArt (16. Okt 2008)

Trotzdem kann ich die Ressourcen aus dem Klassenpfad über den Classloader laden.


----------



## Sirup (16. Okt 2008)

Also um das richitg zu stellen.

Ich benutze keine Exe um die jar zu starten, sondern meine jar wurde per "launch4j" in eine exe verwandelt. ich habe somit keine jar mehr.

im meinen verzeichnis liegt jetzt sozusagen:
tool.exe
prop.properties

und dieses properties file wird natürlich neu erstellt wenn sei gelöscht wurde, oder natürlich bei einem aufruf per cmd, versucht auszulesen. dazu bräuchte ich natürlich aber den pfad von "tool.exe".

ich hoffe ich konnte mein problem verdeutlichen.

der link von Hobbit: der poster dort hat anscheinend ein ähnliches problem, konnte aber keine lösung dort eruieren, da er von eine jar ausgeht.

String dir = new File("").getAbsolutePath(); funktioniert ebenfalls nicht, da wenn ich das tool.exe von der Kommandozeile ausführe (z.b. C:\test, und mein tool.exe liegt in C:\tool), String dir = C:\test und nicht C:\tool ist, was mir somit nicht weiterhilft, da es das selbe Ergebnis wie user.dir liefert. Das Problem kommt daher das das new File im aktuellen Arbeitsverzeichnis erstellt wird - und genau das brauche ich nicht.

danke erstmal für die antworten.


----------



## FArt (16. Okt 2008)

Ich nutze launch4j nicht (Schnick-Schnack, völlig unnötig), aber wenn ich ein ausführbares JAR habe, definiere ich in der Manifestdatei den Klassenpfad (relativ zum JAR). Wenn die Properties also entsprechend rumliegen, dann kann sie der ClassLoader auch aufgreifen.

Wenn Klassenpfade bei einer Konvertierung nicht berücksichtigt würden (werden), dann spricht das eindeutig gegen den Einsatz von dem Krempel.


----------



## Sirup (16. Okt 2008)

werde ich probieren - danke.

das problem wieso ich launch4j bzw. eine exe. brauche ist, weil das tool, schnell und ohne viel tippen von der cmd ausführbar sein muss.
das kann eben ein jar nicht erfüllen.


----------



## FArt (16. Okt 2008)

Sirup hat gesagt.:
			
		

> werde ich probieren - danke.
> 
> das problem wieso ich launch4j bzw. eine exe. brauche ist, weil das tool, schnell und ohne viel tippen von der cmd ausführbar sein muss.
> das kann eben ein jar nicht erfüllen.


Wird immer wieder behauptet, stimmt so aber nicht. Aber die Diskussionen gibt es hier im Forum schon zur Genüge.


----------



## The_S (16. Okt 2008)

Natürlich ist da eine Lösung. Schau dir mal den Link an :roll:

( http://www.javaworld.com/javaworld/javaqa/2003-07/01-qa-0711-classsrc.html? )


----------

