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

标签 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 相关联

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

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

问题出在哪里?

最佳答案

当您使用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 包围 java 命令的调用,即:

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

如果这些命令有效,则双击 jar 文件将导致命令窗口弹出并保留。

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

启动 regedit,然后在 HKEY_CLASSES_ROOT 下搜索名为 .jar 的 key - 这应该会在其下方产生一个名为 (默认) 有一个值,如果您的 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”选项(取决于您是否希望在启动时出错时保留命令窗口)

关于java - 双击 JAR 文件不会打开命令提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446986/

相关文章:

java - nameValuePair 数组列表的数值等效项?

java - 打开 jar 内的资源 : URI is not hierarchical

java - 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

java - mvn 安装后检查损坏的 war 文件

intellij-idea - IntelliJ Spring Boot : How to create an executable jar

java - 为什么我无法以这种方式关闭我的 JAR 可执行文件?

java - 如何从字符串中分离数字

java - 从面向连接(TCP)客户端/服务器的服务器套接字读取客户端套接字上的字节数据包?

java - 使用命令提示符启动后台 java

java - 如何编辑 Android View 项内的文本(内容)