Потому что в Java 6 это выглядело так:
public final static PrintStream out = nullPrintStream();
/**
* The following two methods exist because in, out, and err must be
* initialized to null. The compiler, however, cannot be permitted to
* inline access to them, since they are later set to more sensible values
* by initializeSystemClass().
*/
private static PrintStream nullPrintStream() throws NullPointerException {
if (currentTimeMillis() > 0) {
return null;
}
throw new NullPointerException();
}
так что, я думаю, они упростили это в Java 7 и добавили некоторые исключения в компилятор.
JVM управляет внутренним кодом, вводит его и ошибается, поэтому это сообщение об ошибке не имеет смысла.