2009-09-30 186 views
20

如何從我的java程序外部更改user.home系統屬性,以便它認爲它是與D:\ Documents and Settings \%USERNAME%不同的目錄?通過環境變量或VM參數?更改user.home系統屬性

回答

29

設置VM參數應該工作:

java -Duser.home=<new_location> <your_program> 

這是一個測試案例:

public class test { 
    public static void main(String[] args) { 
    System.out.println(System.getProperty("user.home")); 
    } 
} 

與Java 1.5.0_17在Win XP和Linux

java test 
/home/ChssPly76 

java -Duser.home=overwritten test 
overwritten 
+1

其實,我想這一點,它似乎並沒有工作... – weiji

+1

我已經試過了也工作得很好 - 看到我的代碼示例更新。你用什麼Java版本來試用它? – ChssPly76

+0

它可能是一個shell逃脫問題。 – daveb

15

測試如果你想要爲所有Java程序設置user.home,可以使用特殊環境變量_JAVA_OPTIONS

但請注意,一個difficult to suppress warning message will be printed

$ export _JAVA_OPTIONS=-Duser.home=/some/new/dir 
$ java test 
Picked up _JAVA_OPTIONS: -Duser.home=/some/new/dir 
/some/new/dir