确定应用程序是通过Java还是Javaw启动的?

时间:2012-09-19 12:25:50

标签: java console javaw

我有一个GUI程序,默认情况下通过javaw.exe使用Launch4j创建的启动包装器执行。

也可以从命令行执行该程序,然后将输出打印到控制台。

如何检测控制台是否可见,因此我通过System.out.println()输出的文字是否可见?

根据我的理解,这取决于程序是通过Javaw / wrapper启动还是直接通过java -jar myprog.jar启动。有没有办法区分开始方法和程序?

2 个答案:

答案 0 :(得分:3)

如果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 Examplejavaw Example启动它。

答案 1 :(得分:-1)

$ 0是启动最后一个命令的程序 - 在shell中。