2009-09-30 6 views
20

Comment puis-je modifier la propriété système user.home de l'extérieur de mon programme java, afin qu'elle pense qu'il s'agit d'un répertoire différent de D: \ Documents and Settings \% USERNAME%? Via des variables d'environnement, ou des arguments VM?Modifier la propriété système user.home

Répondre

29

Réglage argument de VM devrait fonctionner:

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

est ici un test:

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

Testé avec Java 1.5.0_17 sur Win XP et Linux

java test 
/home/ChssPly76 

java -Duser.home=overwritten test 
overwritten 
+1

En fait, j'ai essayé cela, et il ne semble pas fonctionner ... – weiji

+1

Je l'ai essayé fonctionne aussi très bien - voir ma mise à jour pour exemple de code. Quelle version de Java avez-vous essayé avec? – ChssPly76

+0

Il pourrait s'agir d'un problème d'échappement de shell. – daveb

15

Si vous voulez Pour définir user.home pour tous les programmes Java, vous pouvez utiliser la variable d'environnement spécial _JAVA_OPTIONS.

Mais notez qu'un 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