2009-09-30 125 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