29

No tengo claro esto. Cuando ejecuto una aplicación java o ejecuto un applet en el visor de applet, (en el entorno IDE), System.getProperty("java.class.path") me da lo mismo que System.getenv("CLASSPATH") que es la CLASSPATH definida en mi variable env.Cuál es la diferencia entre una propiedad del sistema y la variable de entorno

Pero cuando despliego mi applet al servidor web y accedo a ella desde la misma computadora que un cliente, obtengo resultados diferentes para los dos. (System.getProperty("java.class.path") solo apunta a JRE home y System.getenv("CLASSPATH") devuelve nulo).

Y aquí es algunas otras cosas que hacen que me pregunto:

Para la parte applet, el JAVA_HOME env var, me sale el mismo resultado cuando se despliega el applet en un navegador, así como AppletViewer.

Y si me defino una variable env a nivel de sistema, y ​​uso getenv("envName") el resultado es null. ¿De todos modos puedo definir uno y obtenerlo en mi programa Java?

+0

sigo haciendo System.getProperty error ("java.io.tmpdir ") vs System.getenv (" TEMP ") –

+0

Para las personas que lleguen a esta pregunta en el futuro, [esta pregunta] (http://stackoverflow.com/questions/13112038/differ ence-between-system-getenv-system-getproperty) fue marcado como un duplicado y también tiene algunas buenas respuestas. – Krease

Respuesta

34

Las variables de entorno son específicas del sistema operativo. Las propiedades son solo JVM.

+0

Todavía no entiendo si env var es del sistema operativo, ¿por qué mi código en el applet que obtiene el env var de classpath devuelve resultados diferentes en los dos casos? La diferencia en los dos casos es solo la JVM ¿verdad? –

+0

¿Has visto javadoc para System.getenv? Creo que hace una diferencia si lo ejecuta desde el navegador, IDE o consola. Cada uno de estos puede tener un entorno diferente. –

20
System.getProperty("Propertname") **Platform Independent** 

El método anterior devolverá argumentos y propiedades de JVM.

System.getenv("EnvName")  **Platform Dependent** 

El método anterior devuelve el sistema operativo environment variables.

En Linux puede establecer una variable de entorno desde el shell utilizando el siguiente comando .

export SYSTEM_TYPE=PROD 

En Java se puede leer la variable por

System.getenv("SYSTEM_TYPE") 

El código anterior devolverá PROD

http://javarevisited.blogspot.in/2012/08/how-to-get-environment-variables-in.html

Cuestiones relacionadas