【问题标题】:Change user.home system property更改 user.home 系统属性
【发布时间】:2010-12-02 20:11:46
【问题描述】:

如何从我的 java 程序外部更改 user.home 系统属性,使其认为它是与 D:\Documents and Settings\%USERNAME% 不同的目录?通过环境变量或 VM 参数?

【问题讨论】:

    标签: java system-properties


    【解决方案1】:

    设置 VM 参数应该可以工作:

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

    这是一个测试用例:

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

    在 Win XP 和 Linux 上使用 java 1.5.0_17 测试

    java test
    /home/ChssPly76
    
    java -Duser.home=overwritten test
    overwritten 
    

    【讨论】:

    • 我也试过了,效果很好 - 请参阅我的代码示例更新。你用什么java版本试过?
    • 可能是外壳转义问题。
    • 哦嗬! - 我将它调用为“java test -Duser.home=asdf”,如果我执行“java -Duser.home=asdf test”,它确实有效。它模糊地提醒我与处理命令行参数的方式有关。谢谢。
    • @weiji: 是的...... java 命令行语法要求 vm args 在类名之前。如果你把它们放在类名之后,'java' 将假定它们是你的应用程序的常规参数,并将它们作为'args' 数组的一部分传递给'main' 方法。
    【解决方案2】:

    如果要为所有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
    

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多