Le concept de variables d'environnement ne le mérite pas, ce sont les variables environnementales du système d'exploitation.
Les variables système sont des variables maintenues par Java elle-même. Obtenez-le via System.getProperty.
Pour différents systèmes d'exploitation, le traitement des variables d'environnement peut être incohérent, comme l'insensible aux cas, etc.
Java obtient des variables d'environnement
La façon de Java d'obtenir des variables d'environnement est très simple:
System.getenv () obtient toutes les variables d'environnement
System.getenv (Key) obtient la valeur d'une variable d'environnement
Map map = System.getEnv (); Iterator it = map.entryset (). Iterator (); while (it.hasnext ()) {entrée entrée = (entrée) it.next (); System.out.print (entrée.getKey () + "="); System.out.println (entrée.getValue ()); }S'il s'agit d'un système Windows, la valeur imprimée est la même que les variables d'environnement vues à partir de "mon ordinateur".
Java obtient et définit les variables système
La façon de Java d'obtenir des variables d'environnement est également très simple:
System.getProperties () obtient toutes les variables système
System.getProperty (Key) obtient la valeur d'une variable système
Propriétés Properties = System.getProperties (); Iterator it = properties.EntrySet (). Iterator (); while (it.hasnext ()) {entrée entrée = (entrée) it.next (); System.out.print (entrée.getKey () + "="); System.out.println (entrée.getValue ()); }En plus de pouvoir obtenir des variables système, vous pouvez également définir les variables système dont vous avez besoin via System.SetProperty (clé, valeur).
Par défaut, quelles variables système sont définies dans Java:
Remplir
1. Dans .bat; .cmd ou .sh, certaines variables seront définies par set.
Par exemple, SetDomaineNv.CMD de WebLogic
Set Sun_java_Home = C: / Oracle / Middleware / JDK160_21
La variable d'environnement est définie ici
2. Dans la configuration log4j, le chemin de génération du fichier journal est parfois configuré.
Par exemple, $ {log_dir} /logfile.log, le log_dir ici est remplacé par une variable de l'attribut système.
3. Jetez un œil au code source Java. Lorsque vous obtenez des variables système via System.getProperties (), il y aura un contrôle sûr.
Propriétés statiques publiques getProperties () {SecurityManager sm = getSecurityManager (); if (sm! = null) {sm.checkpropertiesaccess (); } return accessoires; } Le SecurityManager dans le système est vide lors d'un seul test d'application Java.
Lorsque Applet s'exécute, les autorisations sont vérifiées en combinaison avec le fichier .policy.
Si vous donnez un Sec par du SecurityManager vide, vous constaterez qu'une exception d'autorisation sera lancée.
public static void main (String [] args) {// TODO Méthode générée automatique Stub System.SetSecurityManager (New SecurityManager ()); // SecurityManager sm = System.getSecurityManager (); //System.out.println(sm); System.getSecurityManager (). CheckPropertiesAccess (); } La différence entre System.getenv () et System.getProperties () public static void main (String [] args) {map m = system.getenv (); for (iterator it = m.KeySet (). Iterator (); it.hasnext ();) {String key = (string) it.next (); String Value = (String) M.get (key); System.out.println (clé + ":" + valeur); } System.out.println ("--------------------------------------"); Propriétés p = System.getProperties (); for (iterator it = p.KeySet (). iterator (); it.hasnext ();) {string key = (string) it.next (); String Value = (String) p.get (key); System.out.println (clé + ":" + valeur); }}Ant_home: d: / programme / devel / antprocessor_architecture: x86logonserver: // rj-weijianjunhomedrive: c: cataina_home: d: /program/server/tomcat5.5dxsdk_dir: d: / programme files / microsoft DirectX sdk (août 2008) / VS80comnt Fichiers / Microsoft Visual Studio 8 / Common7 / Tools / SessionName: ConsolehomePath: / Documents and Settings / AdministratOrTMP: C: / DocuMe ~ 1 / Admini ~ 1 / Locals ~ 1 / Tempwindir: C: / WindowsProcessSor_Identifier: X86 Family 6 Model 15 Steping 13, Gearineintelvs90CoMentools 9.0 / Common7 / Tools / SystemDrive: C: UserProfile: C: / Documents and Settings / AdministratorPathext: .com; .exe; .bat; .cmd; .vbs; .vbe; .js; .jse; .wsf; .wshcommonProgramFiles: C: / Program Files / Common Files / Common Files de programme FilesNumber_Of_Processors: 2ComSpec: C: /windows/system32/cmd.execomputername: rj-weijianjunos: windows_nnusername: AdministratorClientName: consolemp: c: / docume ~ 1 / Administrat Paramètres / Tous Userslib: C: / Program Files / SQLXML 4.0 / Bin / Processor_Level: 6SystemRoot: C: / WindowsClusterLog: C: /windows/Cluster/Cluster.logAppData: C: / Documents et Settings / Administrator / Application Datapath: C: / Windows / System32; C: / Windows; C: C: C: / Windows / System32 / WBEM; C: C: C: / Windows; C; C: C: C: / Windows / System32 / WBEM; C: C: C: / Windows; C; C: C: C: / Windows / System32 / WBEM; C: C: C: / Windows; C; C: C: C: / Windows / System32 / WBEM; C: C: C: / WINDOW Fichiers / Microsoft SQL Server / 80 / Tools / Binn /; C: / Program Files / Microsoft SQL Server / 90 / DTS / BINN /; C: / Program Files / Microsoft SQL Server / 90 / Tools / Binn /; C: / Program Files / Microsoft SQL Server / 90 / Tools / Binn / VShell / Common7 / Ide /; C: / Program Files / MicroSoft 8 / Common7 / ide / privateassembes /; d: / programme / devel / flex_sdk2 / bin; d: / programme / devel / ant / bin; c: / programme fichiers / java / jdk1.6.0_07 / bin;% jonas_root% / bin / nt; d: / programme / devel / ant / binjava_home: C: / Program / Devel / ant / binjava_home: C: / Program / Devel / Ant / Binjava_ Fichiers / Java / JDK1.6.0_07FP_NO_HOST_CHECK: NOPROCESSOR_REVISION: 0f0DProgramfiles: C: / Program FilesVoici la sortie de la propriété:
------------------------------- Inc.java.vendor.url: http: //java.sun.com/path.separator :; java.vm.name: java hotspot (tm) client vmfile.encoding.pkg: sun.iosun.java.launcher: SUN_STANDUSER.COUNDUCT: CNSUN.OS.OS.Patch.Lelevel: Service Pack 2java.vm.specification.name:java Virtual Machine spécificationUser.dir: d: /dev/eclipse/mye65/workspace/jmxjava.runtime.version: 1.5.0_11-b03java.awt.GraphicSenv: SUN.AWT.WIN32GRAPHICSENVIRIONMENTJAVA.ende Files / MyEclipse 6.5 / Jre / lib / endorsedos.arch: x86java.io.tmpdir: c: /docuMe~1/admini~1/locals~1/temp/line.separator: java.vm.specification.vendor: Sun Microsystems Inc.user.variant: OS.NAME: Windows: Windows 2003sun.jnu.encoding: gbkjava.library.path: d: / / programme files / myeclipse 6.5 / jre / bin;.; C: / windows / system32; c: / windows; c: / window Files / Microsoft SQL Server / 90 / DTS / BINN /; C: / Program Files / Microsoft SQL Server / 90 / Tools / Binn /; C: / Program Files / Microsoft SQL Server / 90 / Tools / Binn /; C: / Program Files / Microsoft SQL Server / 90 / Tool Server / 90 / Tools / binn / vsshell / commun7 / ide /; c: / programme files / Microsoft Visual Studio 8 / Common7 / ide / privateassemblies /; d: / programme / devel / flex_sdk2 / bin; d: / programme / devel / ant / bin; c: / programme Files / java / jdk1.6.0_07 / bin;% jonas_root% / bin / nt; d: /program/devel/ant/binjava.specification.name: Java Platform API SpecificationJava.Class.version: 49.0sun.home. Settings / AdministratorUser.TimeZone: Asia / Shanghaijava.awt.printerjob: Sun.Awt.Windows.WprinterJobfile.Encoding: gbkjava.specification.version: 1.5java.class.path: d: / dev / eclipse / mye65 / workspace / jmx / bin; d: programme / li; b / jmx / jmxtools.jar; d: /program/lib/log/commons-logging-1.1.1.jar; d: /program/lib/log/log4j-1.2.15.jar; d: /program/lib/registry/registry.version: 1.0java.home: d :vm.vm.specification.version: 1.0java. Fichiers / MyEclipse 6.5 / jresun.arch.data.model: 32User.Language: zhjava.specification.vendor: Sun Microsystems Inc.awt.toolkit: Sun.Awt.Windows.Wtoolkitjava.v.info: Modejava.version: 1.5.0_11java.ext.Dirs: Java.version: 1.5.0_11java.ext.Dirs: Java.version: 1.5.0_11java.ext.Dirs: D: PROPRIMM Fichiers / MyEClipse 6.5 / Jre / Lib / extun.boot.class.path: d: / programme Files / MyECLipse 6.5 / Jre / lib / rt.jar; d: / / Program Files / MyEclipse 6.5 / JRE / LIB / I18N.JAR; D: / Program Files / MyEclips 6.5 / Jre Files / MyEClipse 6.5 / Jre / Lib / JSSE.jar; D: / Program Files / MyEClipse 6.5 / JRE / LIB / JCE.jar; D: / Program Files / MyEClipse 6.5 / JRE / LIB / CHARSETS.JAR; D: / / Program Files / MyEclipse 6.5 / JRE 6.5 / jre / classesjava.Vendor: Sun Microsystems Inc.file.separator: /java.vendor.url.bug: http: //java.sun.com/cgi-bin/bugreport.cgisun.io.unicode.encoding: Unicodelittlesun.cpu.endian: litlesun.desktop: Windowsun.Cpu.isalist: Pentium_ Pentium + MMX Pentium I486 I386 I86