Das Konzept der Umgebungsvariablen ist damit nicht vertraut, sondern die Umgebungsvariablen des Betriebssystems.
Systemvariablen sind Variablen, die von Java selbst aufrechterhalten werden. Holen Sie es über System.getProperty.
Für verschiedene Betriebssysteme kann die Verarbeitung von Umgebungsvariablen inkonsistent sein, wie z. B. unempfindliche Fall usw.
Java erhalten Umgebungsvariablen
Javas Weg, Umgebungsvariablen zu bekommen, ist sehr einfach:
System.getenv () erhält alle Umgebungsvariablen
System.getenv (Schlüssel) erhält den Wert einer Umgebungsvariablen
Map map = system.getenv (); Iterator it = map.EntrySet (). Iterator (); while (it.hasNext ()) {Eintrag Eintrag = (Eintrag) iT.Next (); System.out.print (Eintrag.getKey ()+"="); System.out.println (Eintrag.getValue ()); }Wenn es sich um ein Windows -System handelt, entspricht der gedruckte Wert wie die Umgebungsvariablen, die von "meinem Computer" aus angezeigt werden.
Java erhält und setzt Systemvariablen
Javas Weg, Umgebungsvariablen zu bekommen, ist ebenfalls sehr einfach:
System.getProperties () erhält alle Systemvariablen
System.getProperty (Schlüssel) Ruft den Wert einer Systemvariablen ab
Properties Properties = System.getProperties (); Iterator it = properties.entrySet (). Iterator (); while (it.hasNext ()) {Eintrag Eintrag = (Eintrag) iT.Next (); System.out.print (Eintrag.getKey ()+"="); System.out.println (Eintrag.getValue ()); }Sie können nicht nur Systemvariablen erhalten, sondern auch die Systemvariablen, die Sie über System benötigen. SetProperty (Schlüssel, Wert).
Welche Systemvariablen sind standardmäßig in Java festgelegt:
Wieder auffüllen
1. in .bat; .Cmd oder .Sh, einige Variablen werden per Set eingestellt.
Zum Beispiel die Setdomainenv.cmd von Weblogic
SET SUN_JAVA_HOME = C:/Oracle/Middleware/JDK160_21
Die Umgebungsvariable wird hier festgelegt
2. In der Log4J -Konfiguration wird der Generierungspfad der Protokolldatei manchmal konfiguriert.
Zum Beispiel wird $ {log_dir} /logfile.log der hier log_dir durch eine Variable des Systemattributs ersetzt.
3. Schauen Sie sich den Java -Quellcode an. Wenn Sie Systemvariablen über System.getProperties () erhalten, wird eine sichere Überprüfung vorhanden.
public statische Eigenschaften getProperties () {SecurityManager sm = GetEcurityManager (); if (sm! = null) {sm.checkpropertiesAccess (); } Return Requisiten; } Der SecurityManager im System ist während eines einzelnen Java -Anwendungstests leer.
Wenn Applet ausgeführt wird, werden die Berechtigungen in Kombination mit der .Policy -Datei überprüft.
Wenn Sie einem leeren SecurityManager angeben, werden Sie feststellen, dass eine Erlaubnisausnahme ausgelöst wird.
public static void main (String [] args) {// Todo automatisch erzeugte Methode Stub System.SetSecurityManager (new SecurityManager ()); // SecurityManager sm = system.getSecurityManager (); //System.out.println(sm); System.GetSecurityManager (). CheckPropertiesAccess (); } Der Unterschied zwischen System.getenv () und System.getProperties () public static void main (String [] args) {map m = system.getenv (); für (iterator it = m.keyset (). iterator (); it.hasnext ();) {String key = (string) it.next (); String value = (String) M.Get (Schlüssel); System.out.println (Schlüssel +":" +Wert); } System.out.println ("----------------------------------"); Eigenschaften p = System.getProperties (); für (iterator it = p.Keyset (). iterator (); it.hasnext ();) {String key = (string) it.next (); String value = (String) p.get (Schlüssel); System.out.println (Schlüssel +":" +Wert); }}ANT_HOME: D:/Program/Devel/Antprozessor_Architecture: x86Logonserver: // rj-weihianjunhomedrive: C: Catalina_Home: d: /program/server/tomcat5.5dxsdk_dir: D:/Program/Microsofts: MicsoftX Sdk (August 2008)/VS80TICE:/Program/Microsofts/Microsoftx Sdk (August 2008)/Vs80Cl. Dateien/Microsoft Visual Studio 8/Common7/Tools/SessionName: ConsoleHomePath:/Dokumente und Einstellungen/AdministratorMp: c:/docume ~ 1/admini ~ 1/locals ~ 1/tempwindir: c:/windowsProcessor_identifier: x86 familie 6 model 15 stepping 13, echte stapeln 9.0/Common7/Tools/SystemDrive: C: UserProfile: C: C:/Dokumente und Einstellungen/Administratorpathext: .com; .exe; .bat; .cmd; .vbs; FileNumber_of_processors: 2comSpec: c: /windows/system32/cmd.execomputername: rjweijianjunos: windows_ntusername: administratorclientname: consoletemp: c:/docum ~ 1/administrator ~ 1/locals ~ 1/templower: rj-wEIJIGUSSS ~ 1/TEMPUSER: und Einstellungen/All UserSLIB: C:/Programmdateien/SQLXML 4.0/bin/processor_level: 6SystemRoot: C:/WindowsClusterLog: C: /windows/cluster/cluster.LogAppdata: C:/Dokumente und Einstellungen/Administrator/Anwendungsdaten: Dateien/Microsoft SQL Server/80/Tools/Binn/; C:/Programmdateien/Microsoft SQL Server/90/DTS/BINN/; C:/Programmdateien/Microsoft SQL Server/90/Tools/Binn/; 8/Common7/ide/privateAsSemblies/; d:/programm/devel/flex_sdk2/bin; d:/programm/devel/ant/bin; Dateien/java/jdk1.6.0_07fp_no_host_check: noprocessor_revision: 0f0dprogramFiles: C:/ProgrammdateienHier ist die Ausgabe der Eigenschaft:
------------------------------------- Java.Runtime.Name:java(tm) 2 Laufzeitumgebung, Standard Editionsun.boot.library.Path: D:/Programmdateien/MyeClipse 6.5/jre/binjava.vm.version: 1.5.0_11-B03java.vm.vendor: Sun MicroSystems: Sun MicroSystems: Sun MicroSystems: Sun MicroSystems: Sun MicroSystems: Sun MicroSystems: Sun MicroSystems: Sun Micro: Inc.java.vendor.url: http: //java.sun.com/path.separator:; java.vm.name: java hotspot (tm) vmfile 2java.vm.specification.name:Java Virtual Machine Specificationuser.dir:D:/dev/eclipse/mye65/workspace/jmxjava.runtime.version:1.5.0_11-b03java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs:D:/Program Dateien/myeclipse 6.5/jre/lib/endensdos.arch: x86java.io.tmpdir: c: /docume~1/admini~1/locals~1/temp/line.separator: java.vm.specification 2003sun.jnu.encoding: gbkjava.library.Path: d:/Programmdateien/myeclipse 6.5/jre/bin; Dateien/Microsoft SQL Server/90/DTS/BINN/; C:/Programmdateien/Microsoft SQL Server/90/Tools/Binn/; Server/90/Tools/Binn/VSSHELL/Common7/IDE/; Dateien/java/jdk1.6.0_07/bin;%jonas_root%/bin/nt; d: /program/devel/ant/binjava.specification Einstellungen/Administratoruser.TimeZone: Asien/Shanghaijava.awt.printerjob: sun.awt.windows.wprinterjobfile.Coding: gbkjava.specification B/jmx/jmxtools.jar; d: /program/lib/log/commons-logging-1.1.jar; d: /program/lib/log/log4j-1.2.15.jar; d:/pro Gram/lib/Registry/Registry.jaruser.Name: Administratorjava.vm.specification.Version: 1.0Java.Home: D:/Programm Dateien/myeclipse 6.5/jresun.arch.data.model: 32user.language: zhjava.specification Dateien/myeclipse 6.5/jre/lib/extsun.boot.class.Path: d:/Programmdateien/MyeClipse 6.5/jre/lib/rt.jar; d:/Programmdateien/myeclipse 6.5/jre/lib/i18n.jar; Dateien/myeclipse 6.5/jre/lib/jsse.jar; d:/Programmdateien/myeclipse 6.5/jre/lib/jce.jar; d:/Programmdateien/myeclipse 6.5/jre/lib/charsets.jar; 6.5/JRE/CLUSSJAVA.VENDOR: Sun Microsystems Inc.File.Sesparator: /java.vendor.url.bug: http: //java.sun.com/cgi --bin/bugrport.cgisun.io.unicode.encoding: unicodelittlesun.cpu.endian: littesun.desktop: fownowsun.cpu.isalist Pentium_Pro Pentium+MMX Pentium i486 i386 i86