我的Jar是双击还是从命令行启动?

我的Jar文件支持单击并从命令行启动。

如果有可用的图形环境,我只会通过检查GraphicsEnvironment.isHeadless()显示GUI

如果用户双击jar文件,我希望能够将日志打印到磁盘上的文件,如果从命令行启动,则将它们打印到控制台。

我一直无法找到答案,是否有任何跨平台的环境变量,或者我可以查看的任何其他内容,以了解用户是否使用java -jar app.jar启动了我的程序,或者他们是否双击了。 jar文件?

一种方法是确定控制台何时为空:

 public static void main(String[] args) { Console console = System.console(); if(console!=null){ System.out.println("Console is not null"); }else{ System.out.println("Console is null"); } } 

尝试使用以下命令从命令行运行代码:

 java -jar [your_runnable_file.jar]