【问题标题】:Run JAVA 8 jar on windows without command prompt在没有命令提示符的 Windows 上运行 JAVA 8 jar
【发布时间】:2015-10-01 11:30:54
【问题描述】:

这是一个简单的 Hello World 测试应用程序。

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        try {
            System.in.read();
        } catch (IOException e) {
            System.out.println("IOException : "+e.getMessage());
        }
    }
}

它在 Eclipse 中被导出为“可运行的 JAR 文件”。

在命令提示符下使用java -jar hello.jar 打开它有效。

但是,当尝试使用双击打开它时,没有任何反应。

注 1:Java 平台是与此类型关联的默认程序。

注2:java -version

java版本“1.8.0_60”

Java(TM) SE 运行时环境 (build1.8.0_60-b27)

Java HotSpot(TM) 64 位服务器 VM(内部版本 25.60-b23,混合模式)

问题 双击不执行命令行 JAVA 8 jar 文件。 我该如何解决?

【问题讨论】:

  • Stackoverflow 的答案 我发现 没有解决确切的问题或已过时。
  • 您必须将控制台附加到您的程序。如果您直接从 cmd 提示符启动它,您将使用此提示符实例来运行它。另一方面,您的 jar 没有这样的 cmd 提示实例。
  • 我认为你需要创建一个实际执行java -jar hello.jar 命令的bat/exe 文件。
  • @BenWin 你能进一步解释一下吗?
  • @UUIIUI 我想过这样做,但是做一个简单的执行任务似乎太麻烦了。如果我找不到任何其他解决方案,我可能会求助于此。

标签: java windows jar click double


【解决方案1】:

如果您双击 *.jar,它实际上是以 javaw -jar Hello.jar 开头的。 java.exejavaw.exe 之间的区别在于javaw 没有关联的控制台窗口。由于您的测试应用程序没有显示任何 GUI 元素,因此它看起来好像不会被执行。

根据您想要实现的目标,您可以创建一个脚本来运行您的应用程序,也可以制作一些图形界面。

【讨论】:

    【解决方案2】:

    当您从文件资源管理器中执行 JAR 时,没有 shell 可以将文本输出写入其中。当你从命令行运行它时,它已经被包裹在一个 shell 中,所以System.out 流已经被设置为 shell 的输出流,所以打印语句是可见的。

    最简单的实用解决方案是创建一个批处理文件来执行java -jar hello.jar 命令,当您在文件资源管理器中打开它时会启动一个命令窗口。

    另一种解决方案是使用 Runtime.exec() 从 Java 应用程序中启动 cmd.exe 上下文,并将输出流设置为与其返回的进程对象相同。

    最优雅但需要更多背景工作的解决方案是在 中实例化一个由 JFrameJTextArea 组成的简单 GUI >JScrollPane,然后您会将输出附加到文本区域。

    【讨论】:

      【解决方案3】:

      您的 jar 可能正在使用 javaw.exe 打开。您可以通过执行命令来验证这一点

      ftype | find "jarfile"
      

      如果显示为javaw.exe

      ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\javaw.exe" -jar "%1" %*
      

      改成java.exe

      ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\java.exe" -jar "%1" %*
      

      我试过了,它对我有用。

      【讨论】:

      • 将其更改为“java.exe”将在每次执行 jar 文件时启动命令提示符,即使它是 GUI 应用程序也是如此。但是,要使此命令起作用,您必须以管理员身份启动命令提示符。
      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多