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

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

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

en Java?

Editar
He usado el método System.getenv() .

Es valor de impresión si doy

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

y muestra valor null si bash lo mismo para la variable del sistema creada por mí

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

Use el System.getenv(String) , pasando el nombre de la variable a leer.

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 al valor actual de una variable de todo el sistema o una variable de usuario en Java, consulte a continuación:

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

Para obtener más información sobre las variables de entorno, consulte esta página de wikipedia .

También asegúrese de que la variable de entorno que está tratando de leer esté configurada correctamente antes de invocar Java haciendo un:

 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.

Hay algunos detalles de interés cuando se obtienen propiedades del sistema / entorno.

Primero, System.getenv(String) se introdujo way-back-when, luego se desaprobó. La desaprobación (tontamente, IHMO) continuó todo el camino hasta JSE 1.4 .

Se reintrodujo en JSE 5 .

Esos se establecen utilizando 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.

A diferencia de las propiedades del entorno, Java también tiene propiedades del sistema Java, accesibles a través de System.getProperties() . Estas variables se pueden inicializar cuando la máquina virtual se inicia utilizando una serie -D name = value línea de comandos argumentos. Por ejemplo, los valores para las propiedades maxInMemory y pagingDirectory se establecen en el siguiente comando:

 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.

En realidad, la variable se puede configurar 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 trataremos de obtener la variable ENV_VAR1 , si no existe podemos lanzar alguna Excepción personalizada para alertar sobre ella:

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

Google dice que echa un vistazo a getenv () :

Devuelve una vista de mapa de cadena no modificable 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 ayudar más.

Como mencioné anteriormente en sombody, reiniciar el eclipse funcionó para mí para la variable de entorno definida por el usuario. Después de reiniciar eclipse IDE, System.getenv() está recogiendo mi variable de entorno.

¿Has intentado reiniciar desde que configuraste 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.

Del comentario @Yasin:

La opción de reinicio de eclipse no funciona. Solo cerrar la aplicación y reiniciarla resolverá el problema.