setproperty property example java jvm system-properties

property - system.properties java



Si especifico una propiedad del sistema varias veces al invocar JVM, ¿qué valor se usa? (2)

La clase java.util.System está respaldada por una clase de propiedades, que es solo una extensión de Hashtable. Suponiendo que los valores se leen en orden al pasar como argumentos a la JVM, entonces el último valor asignado probablemente será el valor.

Si especifico una propiedad del sistema varias veces al invocar la JVM, ¿qué valor obtendré cuando recupere la propiedad? p.ej

java -Dprop=A -Dprop=B -jar my.jar

¿Cuál será el resultado cuando llame a System.getProperty("prop"); ?

La documentación de Java sobre esto realmente no me dice nada útil en este frente.

En mis pruebas no científicas en un par de máquinas que ejecutan diferentes JVM, parece que el último valor es el que se devolvió (que en realidad es el comportamiento que necesito), pero me pregunté si este comportamiento realmente está definido oficialmente en cualquier lugar o puede variar entre las JVM. ?


No hay nada como escribir una pequeña clase para ver cómo funciona.

public class PropTest { public static void main(String[] args) { System.out.println(System.getProperty("prop")); } }

Que cuando se compila y se ejecuta con la línea de comandos

java -Dprop=A -Dprop=B -Dprop=C PropTest

Aumenta la salida

C

Lo que implicaría que los valores se colocan en la tabla de izquierda a derecha, con el último valor sobrescribiendo los valores anteriores.

Solo para tomar nota del entorno, Fedora 16, Linux 3.3.7, 64 bit.

> java -version java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.1) (fedora-65.1.11.1.fc16-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)