2010-12-14 10 views
13

Ich verwende eine Java-Anwendung über die Befehlszeile. Kann ich ein Befehlszeilenargument angeben, um das aktuelle laufende Verzeichnis auf etwas anderes als das zu beschränken, wo die Anwendung tatsächlich ausgeführt wird?Können Sie das aktuelle laufende Verzeichnis über die Java-Befehlszeile festlegen?

+0

Nicht sicher, dass dies ein Duplikat ist, aber hilfreich sein kann http://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java – khachik

+0

Ja, das kann hilfreich sein. Neue Datei (übergeordnet, Pfad) funktioniert möglicherweise. Ich werde es versuchen müssen. Warum ich diese Frage gepostet habe, versuche ich, einen Profiler auf einer DLL zu verwenden, die meine Anwendung lädt. Da ich java.exe im Wesentlichen profilieren muss, wird das aktuelle Arbeitsverzeichnis auf meinen jdk-Ordner gesetzt und wirft meine relativen Pfade in meiner Anwendung aus. – user538442

+0

Ihr Profiler sollte eine Option haben, um das Startverzeichnis festzulegen. Oder ist es vielleicht möglich, eine BAT-Datei zu schreiben und Profiler zu sagen, es auszuführen? –

Antwort

0

Wenn Sie das aktuelle Verzeichnis ändern möchten, müssen Sie JNI verwenden und eine native API aus Ihrem Java-Code aufrufen. Zum Beispiel für Windows würden Sie SetCurrentDirectory

+0

Ich benutze JNI, also könnte dies eine mögliche Lösung sein. – user538442

+0

Das würde Ihren Code natürlich komplett nicht portabel machen. –

3

verwenden Wenn es möglich, dass ich eher einen Skript verwenden, würde die Java-Anwendung auszuführen und das Verzeichnis, in dem Skript festgelegt:

#!/bin/sh 
cd <your dir> 
java <some arguments> 

Die JNI-Lösung kann alle betreffen Arten von relativen Pfaden in Ihrer Anwendung; B. den Klassenpfad, den Sie eingeben.

33

Es gibt ein JVM-Argument -Duser.dir, mit dem das Arbeitsverzeichnis für JVM festgelegt werden kann.

0

Ich fand diese SO-Post und es half mir, mein Problem zu lösen. Obwohl ich etwas Spezifisches über IntelliJ teilen wollte, das vielleicht jemand anderen auf die Palme bringen könnte.

ich ein Bild unten geschrieben habe, in dem der -Duser.dir Flag verwendet wird und auch das Arbeitsverzeichnis Textfeld.

"Working Directory" field has lower precedence than the -Duser.dir flag.

In dieser Situation gefüllt ist, wird das Arbeitsverzeichnis eingestellt wird "JarLearning" statt "2ndTry".

Verwandte Themen