The System class uses methods to set the static in/out/err fields to null initially (the fields are later set to their correct values), and for reasons now lost in the history of Java perform a check that was assumed to be vacuously true, that: currentTimeMillis() >= 0 however if the system time has not been initialized (or is deliberately set far in the past) the result can be negative which results in the code explicitly throwing NullPointerException which leads to ExceptionInInitializerError which prevents the VM from initializing. See email discussion: http://mail.openjdk.java.net/pipermail/core-libs-dev/2010-July/004549.html Problem reported by jon.vanalten at redhat.com
|