2013-10-02 47 views
1

我正在做一個運行應用程序的基本.bat文件。這是獲得自動啓動功能。Java user.dir並不總是正確

但是由於某些原因,System.getProperty("user.dir")並不總能得到正確的程序路徑。

基本上我保存這.bat文件:

protected final String fileSeparator=System.getProperty("file.separator"); 
out.println("@echo off"); 
out.println("start " + System.getProperty("user.dir") + fileSeparator +"App.jar"); 
out.println("exit"); 

在Windows服務器返回正確的路徑,但在Vista上沒有。

任何想法,我可以得到這個工作在所有版本的Windows?

+0

你預計在Vista上什麼路徑,它返回路徑是什麼? –

+1

順便說一句,你可以使用File.pathSeparatorChar更容易地訪問文件分隔符 –

回答

3

可以通過提供user.dir來當您啓動Java程序,這個

java somepackage.Main -Duser.dir=C:/Users/myUser 
3

user.dir來=用戶的工作目錄像這樣做 [from documentation]

這是很難基於價值採取的決定的這個變量。根據啓動「java」的程序,它可能有不同的值。例如,bat文件可以從不同的命令窗口調用不同的工作目錄。

您可以使用%~dp0來獲取批處理腳本的位置,然後將相關的其他路徑。

另一種選擇是使用像launch4j工具,它允許一個簡單的方法來控制程序目錄:How to get the path to the executable when using launch4j?

相關問題