2009-09-30 23 views
20

¿Cómo cambio la propiedad del sistema user.home desde fuera de mi programa java, para que piense que es un directorio diferente de D: \ Documents and Settings \% USERNAME%? A través de variables de entorno, o argumentos de VM?Cambiar la propiedad del sistema user.home

Respuesta

29

Configuración argumento de VM debería funcionar:

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

Aquí es un caso de prueba:

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

Probado con Java 1.5.0_17 en Windows XP y Linux

java test 
/home/ChssPly76 

java -Duser.home=overwritten test 
overwritten 
+1

En realidad, he intentado esto, y no parece que trabajar ... – weiji

+1

Lo he intentado también, funciona bien - ver mi actualización para ejemplo de código. ¿Con qué versión de Java lo has probado? – ChssPly76

+0

Podría ser un problema de escape de shell. – daveb

15

Si quieren para establecer user.home para todos los programas de Java, puede usar la variable de entorno especial _JAVA_OPTIONS.

Pero tenga en cuenta que 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 
Cuestiones relacionadas