双击JAR文件不会打开命令提示符

时间:2012-05-04 10:23:51

标签: java jar executable-jar

我想通过双击运行Jar文件。

以下是其中唯一存在的Java类文件。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Sysout{
public static void main(String[] args) throws IOException{
    System.out.println("Hello World!");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String msg = br.readLine();
    System.out.println(msg);
    br.read();
}
}

并且Manifest文件已定义Main-Class。

使用this链接,我通过双击批处理文件成功运行了Jar文件。 这将打开命令提示符并运行定义的主类。

但是,如果我直接双击Jar文件,则没有任何反应。 我还检查了this链接并将我的.jar与javaw.exe相关联 This链接也提示相同。 还尝试将.jar与java.exe相关联

命令提示符会在几分之一秒后打开并消失。

即使我希望用户输入一些数据,双击操作也不会等待用户输入任何内容。

问题出在哪里?

3 个答案:

答案 0 :(得分:13)

当您使用javaw关联时,它不会创建命令窗口,并且会吞下所有System.outSystem.err次调用。

您应该将.jar文件与java二进制文件重新关联,该二进制文件应显示必需的命令窗口。

如果您使用简单的Open 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=jarfiletermassoc .jar=jarfile

在窗口和非窗口之间切换

如果你想在运行.jar后保持命令窗口,那么你用cmd /s /k viz围绕调用java命令:

ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm

如果这些命令有效,那么双击jar文件将导致命令窗口弹出并保持不变。

您无法使用Open With...或使用允许运行jar文件的Default Programs设置足够复杂的命令行。如果您已成功尝试了所有这些工作ftypeassoc命令,但它仍然不起作用,那么您将需要剥离注册表编辑器。

启动regedit,并在HKEY_CLASSES_ROOT下搜索名为.jar的密钥 - 如果您的ftype命令调用有效,则应在其下方生成一个名为(Default)的值,其值为jarfileterm ,那么它应该是HKEY_CLASSES_ROOT。如果它不起作用,那么你正在查看一个可能由另一个应用程序创建的关联(我不知道java updater是否替换了这些条目,但如果有,那么这可能是问题)< / p>

您需要在Shell中查找此密钥。它会找到此条目,其中应包含一个键jarfileterm(即展开文件夹Shell,它应显示另一个文件夹Open),其中包含一个键Command包含一个键(Default),其中包含一个ftype jarfileterm=...值,该值应包含用于启动.jar文件的调用命令。此命令应与您键入的最后cmd /s /k条目匹配。如果没有,则应使其与{{1}}或“c:\ program files \ java \ jre7 \ bin \中的一个匹配java.exe“选项(取决于是否要在启动时出现错误时保留命令窗口)

答案 1 :(得分:1)

可能是您的.jar文件已与任何其他默认程序绑定,右键单击并使用“Java(TM)Platform SE binary”打开。如果有可执行的jar文件,这应该有效。

答案 2 :(得分:0)

我正在使用JDK在Windows 10中打开jar文件。

  1. 打开regedit→HKEY_CLASSES_ROOT \ jarfile \ shell \ open \ command
  2. 将默认设置从javaw更改为java

例如,我的是"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-jar" "%1"