Windows下双击jar文件运行java控制台程序

放假之前曾经遇到这样一个问题:

Windows操作系统下,用java写的图形界面程序,打包成jar后,双击可以直接运行。但是java写的控制台程序,打包成jar后,双击无任何反应。

我们知道在cmd中直接输入“java -jar test.jar”就可以运行这个jar文件,程序的运行结果直接输出到控制台。既然用命令行可以运行,那么为什么直接双击却不能运行?

看一下jar文件的默认打开方式是什么。在注册表编辑器中进入HKEY_CLASSES_ROOT\.jar,看到打开方式对应于一个叫“jarfile”的项。再定位到HKEY_CLASSES_ROOT\jarfile\shell\open\command,看到打开jar文件的命令行为

“C:\Program Files\Java\jdk1.8.0_20\bin\javaw.exe” -jar “%1” %*

因为有-jar这个选项,所以直接在jar文件上更改打开方式无法正确打开,会导致错误。

我直接在注册表中修改,把javaw.exe改成java.exe,再双击直接打开jar文件就可以运行java写的控制台程序了。

在网上查了一下,javaw.exe只能运行图形界面程序,不输出控制台信息,而java.exe既可以运行图形界面程序又可以输出控制台信息。

注:java写的控制台程序和exe格式的控制台程序一样,如果只有输出而不等待键盘输入,则控制台窗口会一闪而过,看不到结果,所以在输出结果后应该加一条等待用户键盘输入的语句。

发表评论

电子邮件地址不会被公开。 必填项已用*标注