javaw.exe
我有一个通过使用 Launch4j 创建的启动包装器默认执行的 GUI 程序。
该程序也可以从命令行执行,然后将输出打印到控制台。
如何检测控制台是否可见,因此我输出的文本System.out.println()
是否可见?
据我了解,这取决于程序是通过 Javaw/wrapper 启动还是直接通过java -jar myprog.jar
. 有没有办法区分这两种启动方法和程序?
如果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
or启动它javaw Example
。
$0 是在 shell 中启动最后一个 cmd 的程序。