当您使用javaw
关联时,它不会创建命令窗口,并吞下所有System.out
和System.err
调用。
您应该将您的.jar
文件与java
二进制文件重新关联,该二进制文件应显示必要的命令窗口。
如果您使用 simpleOpen With...
选项,它将-jar
从命令行中省略该选项。
打开管理员命令窗口(如果您使用启用了 UAC 的 Vista 或 Windows 7,则需要此窗口)并执行以下操作:
assoc .jar=jarfileterm
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*
在您的情况下,您应该将C:\Program Files\Java\jre7\bin\java.exe
路径替换为安装 jre 的路径。
当您双击此操作时,它应该可以正常运行。
您可以添加另一个 ftype:
ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
再次用适用于您系统的路径替换 javaw 二进制文件的路径。
您现在应该能够通过交替选择assoc .jar=jarfileterm
和assoc .jar=jarfile
如果你想在运行 .jar 之后保留命令窗口,那么你可以在 java 命令的调用中加上一个cmd /s /k
viz:
ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm
如果这些命令有效,则双击 jar 文件将导致命令窗口弹出并持续存在。
您无法设置足够复杂的命令行,Open With...
或者使用Default Programs
它将允许 jar 文件运行。如果您已成功尝试了所有这些努力ftype
和assoc
命令,但仍然无法正常工作,那么您将需要剥离注册表编辑器。
启动regedit
,并在下面搜索一个名为 .jar 的键HKEY_CLASSES_ROOT
- 这应该会导致它下面的单个值调用(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”选项之一匹配(取决于您是否想要在启动或不启动错误的情况下保留命令窗口)