Quelle est la meilleure façon/infaillible d'obtenir les valeurs des variables d'environnement dans Windows lors de l'utilisation de J2SE 1.4?Accès aux variables système Windows en Java 1.4
Répondre
Vous n'avez absolument aucun moyen d'accéder directement aux variables d'environnement à partir de Java API. La seule façon d'y parvenir qu'avec Runtime.exec avec un tel code:
Process p = null;
Runtime r = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase();
// System.out.println(OS);
if (OS.indexOf("windows 9") > -1) {
p = r.exec("command.com /c set");
}
else if ((OS.indexOf("nt") > -1)
|| (OS.indexOf("windows 2000") > -1)
|| (OS.indexOf("windows xp") > -1)) {
// thanks to JuanFran for the xp fix!
p = r.exec("cmd.exe /c set");
}
Bien que vous puissiez accéder à des variables Java grâce à System.getProperties(); Mais vous obtenez seulement quelques variables d'environnement cartographiée par machine virtuelle Java lui-même, et les données supplémentaires que vous pourriez fournir sur la ligne de commande java avec « -Dkey = valeur »
Pour plus d'informations, voir http://www.rgagnon.com/javadetails/java-0150.html
les passer dans la machine virtuelle Java comme -D propriétés système, par exemple:
java -D<java var>=%<environment var>%
De cette façon, vous n'êtes pas lié à un système d'exploitation particulier.
Il existe un commutateur à la JVM pour cela. De here:
Start the JVM with the "-D" switch to pass properties to the application and read them with the System.getProperty() method.
SET myvar=Hello world
SET myothervar=nothing
java -Dmyvar="%myvar%" -Dmyothervar="%myothervar%" myClass
then in myClass
String myvar = System.getProperty("myvar");
String myothervar = System.getProperty("myothervar");
Vous pouvez utiliser getenv() pour obtenir les variables d'environnement:
String variable = System.getenv("WINDIR");
System.out.println(variable);
Je crois que la fonction getenv() a été dépréciée à un moment donné, mais puis "non déprécié" plus tard dans Java 1.5
ETA:
Je vois que la question fait maintenant spécifiquement référence à java 1.4, donc cela ne fonctionnerait pas pour vous (ou au moins vous pourriez vous retrouver avec un avertissement de désapprobation). Je vais laisser la réponse ici si quelqu'un d'autre trébuche sur cette question et utilise une version ultérieure.
Ceci est la "réponse" pour les versions Java modernes. Merci! – Dale
Deprecated ne vous empêche pas de l'utiliser; –
Cela ne fonctionnera pas sur une machine virtuelle Java 1.4 "récente" qui lèvera une exception: "java.lang.Error: getenv n'est plus supporté, utilise les propriétés et -D à la place". – jhunovis
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
Apache Commons Exec fournit "org.apache.commons.exec.environment.EnvironmentUtils" un moyen d'obtenir les variables d'environnement avant 1.5 de JDK:
(String) EnvironmentUtils.getProcEnvironment().get("SOME_ENV_VAR")
- 1. accès aux variables simultanées en c
- 2. Accès aux variables post à l'aide de servlets Java
- 3. javascript problème accès aux variables privées
- 4. Accès aux variables d'état OpenGL dans Cg
- 5. propagation de variables d'environnement sur système Windows
- 6. accès aux paramètres POST
- 7. Accès Registre Windows
- 8. Variables Accès Prototype
- 9. Accès de type tableau aux variables dans T-SQL
- 10. Accès aux variables 'Global' dans une tâche ExecuteSQL
- 11. Accès aux variables d'instance de méthodes de délégué UITableView
- 12. Accès aux variables parentes dans la méthode enfant
- 13. Comment ajouter un élément XML en Java 1.4
- 14. accéder aux données iTunes Lyrics en Java sur Windows
- 15. Que modifier pour optimiser les variables système mysql sur Windows?
- 16. Accès aux objets du noyau distant sous Windows
- 17. Accès aux membres Guid en C#
- 18. Accès en lecture seule aux procédures stockées
- 19. Accès aux éléments DOM en C#
- 20. Accès aux partages réseau
- 21. Système de fichiers en mémoire pour Windows
- 22. Accès aux listes d'images
- 23. Accès variables et méthodes en dehors des définitions de classe
- 24. Accès aux annotations Java à partir d'un taglet
- 25. Accès aux objets Json
- 26. Méthode publique statique accédant aux variables d'instance privées en Javascript
- 27. Accès aux ressources incorporées dans IronPython
- 28. Accès aux partages réseau d'un service
- 29. Accès aux info-bulles de VBA
- 30. Accès direct aux cellules TableLayoutPanel
Ceci est utile .. Je viens utilisé echo% env_variable_name% pour obtenir la valeur directement, au lieu d'avoir à analyser la sortie de SET. –
Je n'ai pas appris le langage Java pour rediriger les commandes dans cmd =/ –
Cela ne vous aidera pas à trouver les variables d'environnement définies sur le programme Java en cours d'exécution si elles sont différentes de l'ensemble global des variables d'environnement. –