2009-02-10 17 views
74

¿Cómo puedo obtener el valor variable del sistema que está presente en¿Cómo puedo obtener el valor de la variable del sistema en Java?

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

en Java?

Edición
he utilizado System.getenv() método.

Se está imprimiendo valor si doy

System.out.println(System.getenv("JAVA_HOME")); 

y que está mostrando null valor si trato igual para la variable del sistema creado por mí

System.out.println(System.getenv("DBE")); 
+2

Puede intentar reiniciar el proceso de solicitud (NetBeans en mi caso). – Kotodid

+1

He observado que la opción de reinicio de eclipse no funciona. Simplemente cierra la aplicación y comienza de nuevo. – Yasin

Respuesta

4

Google dice para ver getenv():

Devuelve una cadena inmodificable ver mapa del entorno del sistema actual.

No estoy seguro de cómo las variables del sistema difieren de las variables de entorno, sin embargo, por lo que si pudiera aclarar podría ayudarme más.

+0

Creo que raja significa "todo el sistema" en lugar de variables de entorno "por usuario". – Rob

34

Para aclarar, las variables del sistema son las mismas que las variables de entorno. Las variables de entorno de usuario se establecen por usuario y son diferentes cada vez que un usuario diferente inicia sesión. Las variables de entorno de todo el sistema son las mismas sin importar con qué usuario inicie sesión.

Para acceder a cualquiera de los dos el valor actual de una amplia variable de sistema o una variable de usuario en Java, ver más abajo:

String javaHome = System.getenv("JAVA_HOME"); 

Para obtener más información sobre las variables de entorno de ver este wikipedia page.

También asegúrese de que la variable de entorno que está intentando leer está configurado correctamente antes de invocar Java haciendo una:

echo %MYENVVAR% 

debería ver el valor de la variable de entorno. De lo contrario, es posible que deba volver a abrir el shell (DOS) o cerrar sesión y volver a iniciar sesión.

+0

Hola ... He usado el método System.getenv(). Es un valor de impresión si le doy "System.out.println (System.getenv (" JAVA_HOME "));" y muestra un valor nulo si le doy la variable del sistema creada por mí ("System.out.println (System.getenv (" DBE "));" – raja

+2

'getenv' debe estar en minúscula en lugar de' getEnv' ¿verdad? –

+0

If Hago 'echo% var%' imprime '% var%'. Si intento en cambio 'echo $ var' funciona y muestra el valor de esa variable env. Mi' getenv' devuelve nulo – dialex

1

¿Has intentado reiniciar desde que estableciste la variable de entorno?

Parece que Windows mantiene su variable de entorno en algún tipo de caché, y el reinicio es un método para actualizarlo. No estoy seguro, pero puede haber un método diferente, pero si no va a cambiar su valor variable con demasiada frecuencia, esto puede ser suficiente.

19

Hay algunos detalles de interés al obtener las propiedades del sistema/entorno.

Primero, System.getenv(String) se introdujo way-back-when, luego en desuso. La desaprobación (tontamente, IHMO) continuó all the way into JSE 1.4.

Tiene re-introduced in JSE 5.

Se configuran usando el panel Variables de entorno en Windows. Es posible que los cambios en las variables no se recojan hasta que se cierre la VM actual y se cierre la instancia de CMD.exe.

En contraste con las propiedades del entorno, Java también tiene propiedades de sistema Java, accesibles a través de System.getProperties(). Estas variables se pueden inicializar cuando la VM se inicia utilizando una serie de argumentos de línea de comandos -Dname=value. Por ejemplo, los valores de las propiedades maxInMemory y pagingDirectory se establecen en el comando a continuación:

 
C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar 

Estas propiedades se pueden modificar en tiempo de ejecución, salvo las restricciones de la política de seguridad.

+0

cerrando el java y reabriéndolo lo resolvió, gracias. –

5

En realidad, la variable se puede establecer o no, por lo tanto, en Java 8 o superior su valor anulable debe ser envuelto en un objeto Optional, que permite características realmente buenas. En el siguiente ejemplo vamos a tratar de obtener la variable de ENV_VAR1, si no lo existe que puede arrojar alguna excepción personalizada para alertar al respecto:

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
() -> new CustomCheckedException("ENV_VAR1 is not set in the environment")); 
0

Según lo mencionado por sombody anterior, reiniciar Eclipse trabajó para mí por el usuario definido Variable ambiental. Después de reiniciar eclipse IDE, System.getenv() está recogiendo mi variable de entorno.

Cuestiones relacionadas