2010-12-14 152 views
13

我正在從命令行運行Java應用程序。我可以指定一個命令行參數來將當前運行目錄設置爲應用程序實際運行位置以外的位置嗎?你能從java命令行設置當前運行目錄嗎?

+0

不知道這是重複的,但可以幫助http://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java – khachik 2010-12-14 18:30:36

+0

是的,這可能會有所幫助。新的文件(父,路徑)可能工作。我將不得不嘗試。我發佈這個問題的原因是我試圖在應用程序加載的dll上使用分析器。由於我必須基本上配置java.exe,所以當前工作目錄被設置爲我的jdk文件夾,並在我的應用程序中拋出我的相對路徑。 – user538442 2010-12-14 18:33:10

+0

你的分析器應該有一個選項來設置起始目錄。或者也許可以寫一個BAT文件並告訴profiler運行它? – 2010-12-14 18:54:00

回答

0

如果您想更改當前目錄,則必須使用JNI並從Java代碼調用本機API。例如,對於Windows中,您將使用SetCurrentDirectory

+0

我正在使用JNI,所以這可能是一個可能的解決方案。 – user538442 2010-12-14 18:35:05

+0

這會使你的代碼完全不可移植,當然。 – 2010-12-15 03:31:15

3

如果這一切成爲可能,我寧願使用腳本來運行Java應用程序和設置目錄中的腳本:

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

的JNI的解決方案,可能會影響到所有您的應用程序中的各種相對路徑;例如您輸入的類路徑。

33

有一個JVM參數-Duser.dir可用於設置JVM的工作目錄。

0

我發現這個SO帖子,它幫助我解決了我的問題。儘管我想分享一些關於IntelliJ的具體內容,可能會讓其他人感興趣。

我已經發布以下其中-Duser.dir標誌使用,也工作目錄文本字段填寫一張圖片。

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

在這種情況下,工作目錄將被設置爲「JarLearning」而不是「2ndTry」。