If I specify a System property multiple times when invoking JVM which value is used?

There's nothing like writing a little class to see how it works.

public class PropTest {

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

}

Which when compiled and ran with the command line

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

yeilds the output

C

Which would imply that the values are put into the table left to right, with the last value overwriting previous values.

Just to make a note of the environment, 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)

The java.util.System class is backed by a Properties class, which is just an extension of Hashtable. Assuming the values are read in order when passing as arguments to the JVM, then the last value assigned will be the final value.