确定应用程序是通过Java还是Javaw启动的?
我有一个GUI程序,默认情况下通过确定应用程序是通过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,则没有控制台,当您
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。为什么要检测应用程序的运行方式?这里可能不存在应用程序运行方式的问题。