Определить, было ли приложение запущено через Java или Javaw?
У меня есть программа с графическим интерфейсом, которая выполняется по умолчанию через javaw.exe
используя стартовую оболочку, созданную с помощью Launch4j.
Эту программу также можно запустить из командной строки, а затем распечатать вывод на консоль.
Как я могу определить, видна ли консоль, и, следовательно, выводить текст через System.out.println()
виден?
Насколько я понимаю, это зависит от того, была ли программа запущена через Javaw / Wrapper или напрямую java -jar myprog.jar
, Есть ли способ отличить оба метода запуска от программы?
2 ответа
Если System.console()
возвращается null
консоли нет, что происходит при запуске программы с javaw
вместо java
, Пример:
import javax.swing.JOptionPane;
public class Example {
public static void main(String[] args) {
if (System.console() != null) {
System.out.println("Hello on the console");
} else {
JOptionPane.showMessageDialog(null, "Hello, there's no console");
}
}
}
Попробуйте скомпилировать это, а затем начать с java Example
или же javaw Example
,
$0 - программа, которая запустила последний cmd - в оболочке.