当您使用
javaw
关联时,它不会创建命令窗口,并且会吞掉所有的
System.out
和
System.err
调用。
您应该重新将您的
.jar
文件与
java
二进制文件关联起来,这样应该会显示所需的命令窗口。
如果您使用简单的
打开方式...
选项,则会从命令行中省略
-jar
选项。
打开管理员命令窗口(如果您使用启用了UAC的Vista或Windows 7),然后执行以下操作:
assoc .jar=jarfileterm
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*
在你的情况下,你应该使用安装了jre的路径替换
C:\Program Files\Java\jre7\bin\java.exe
路径。
当你双击它时,它应该可以正确运行。
你可以添加另一个ftype:
ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
将路径中的javaw二进制文件替换为适用于您系统的文件。
现在,您可以通过交替选择assoc .jar=jarfileterm
和assoc .jar=jarfile
来在窗口化和非窗口化之间切换。
如果您想在运行.jar后保留命令窗口,则可以使用cmd /s /k
将java命令调用括起来,如下所示:
ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm
如果这些命令有效,那么双击JAR文件将会弹出一个命令行窗口并保持打开状态。
无法使用“打开方式...”或“默认程序”设置足够复杂的命令行,以便允许JAR文件运行。如果你已经成功尝试了所有这些方法,例如ftype和assoc命令,但仍无法正常运行,则需要进入注册表编辑器。
启动regedit并搜索HKEY_CLASSES_ROOT下的名为.jar的键 - 这应该会产生一个名为(Default)的单个值,如果你的ftype命令调用已经起作用,则其值应为jarfileterm。如果没有效果,则可能是另一个应用程序创建的关联(我不知道Java更新程序是否替换这些条目,但如果是,则可能是问题所在)。
接下来需要在HKEY_CLASSES_ROOT中查找此键。它将找到此条目,其中应该包含一个名为Shell的键(即扩展文件夹jarfileterm,应该显示另一个文件夹Shell),其中包含一个名为Open的键,其中包含一个名为Command的键,该键包含一个(Default)值,其中应包含启动.JAR文件的调用命令。此命令应与您输入的最后一个ftype jarfileterm=...条目匹配。如果不匹配,则应使其与cmd /s /k或"c:\program files\java\jre7\bin\java.exe"选项之一匹配(具体取决于您是否要在启动时保持命令窗口)。