How do I change the user.home system property from outside my java program, so that it thinks it's a different directory from D:\Documents and Settings\%USERNAME%? Via environment variables, or VM arguments?
To set JAVA_HOME, do the following: Right click My Computer and select Properties. On the Advanced tab, select Environment Variables, and then edit JAVA_HOME to point to where the JDK software is located, for example, C:\Program Files\Java\jdk1. 6.0_02.
To get a specific system property you can use System. getProperty(String key) or System. getProperty(String key, String def) . Environment variables are set in the OS, e.g. in Linux export HOME=/Users/myusername or on Windows SET WINDIR=C:\Windows etc, and, unlike properties, may not be set at runtime.
Setting VM argument should work:
java -Duser.home=<new_location> <your_program>
Here's a test case:
public class test { public static void main(String[] args) { System.out.println(System.getProperty("user.home")); } }
Tested with java 1.5.0_17 on Win XP and Linux
java test /home/ChssPly76 java -Duser.home=overwritten test overwritten
If you want to set user.home
for all Java programs, you can use the special environment variable _JAVA_OPTIONS
.
But note that a 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With