[java] What is the difference between run-time error and compiler error?