Прямой ответ: вы не можете сказать, как была запущена JVM.
Но для примера использования в вашем вопросе вам не нужно знать, как была запущена JVM. То, что вам действительно нужно знать, это то, увидит ли пользователь сообщение, записанное на консоль. И способ сделать это будет примерно так:
if (!file.exists()) {
Console console = System.console();
if (console != null) {
console.format("File doesn't exists%n");
} else if (!GraphicsEnvironment.isHeadless()) {
JOptionPane.showMessage(null, "File doesn't exists");
} else {
// Put it in the log
}
}
Javadoc для Консоль , хотя и не является водонепроницаемым, настоятельно намекает на то, что объект консоли (если он существует) пишет в консоль и не может быть перенаправлен.
Спасибо @Stephen Denne за подсказку !GraphicsEnvironment.isHeadless()
.