1

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

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

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

据我了解,这取决于程序是通过 Javaw/wrapper 启动还是直接通过java -jar myprog.jar. 有没有办法区分这两种启动方法和程序?

4

2 回答 2

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 Exampleor启动它javaw Example

于 2012-09-19T12:31:00.027 回答
-1

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

于 2012-09-19T12:27:38.070 回答