Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定应用程序是通过Java还是Javaw启动的?_Java_Console_Javaw - Fatal编程技术网

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

确定应用程序是通过Java还是Javaw启动的?,java,console,javaw,Java,Console,Javaw,我有一个GUI程序,默认情况下通过javaw.exe使用Launch4j创建的启动包装执行 该程序也可以从命令行执行,然后将输出打印到控制台 如何检测控制台是否可见,从而通过System.out.println()输出的文本是否可见 据我所知,这取决于程序是通过Javaw/wrapper启动的,还是直接由java-jarmyprog.jar启动的。有没有办法区分两种启动方法和使用程序 $0是启动shell中最后一个cmd的程序。如果System.console()返回null,则没有控制台,当您

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

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

如何检测控制台是否可见,从而通过
System.out.println()
输出的文本是否可见


据我所知,这取决于程序是通过Javaw/wrapper启动的,还是直接由
java-jarmyprog.jar
启动的。有没有办法区分两种启动方法和使用程序

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

如果
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示例
javaw示例

开始。另请参见一些IDE也使用javaw运行,并直接获取stdin和stdout。为什么要检测应用程序的运行方式?这里可能不存在应用程序运行方式的问题。