【问题标题】:Run a JAR file using a specific JRE使用特定 JRE 运行 JAR 文件
【发布时间】:2012-05-25 16:08:11
【问题描述】:

在 Windows 上是否可以使用位于特定文件夹中的 JRE 运行 JAR 文件?类似于 Eclipse 在您指定的路径中查找其 JRE 的方式。一些 Windows 可执行代码(C 或 C++)或批处理文件都可以完成这项工作。谢谢!

【问题讨论】:

  • “有没有办法在 Windows 上使用位于特定文件夹中的 JRE 运行 JAR 文件?” 为什么?为什么是特定文件夹而不是特定版本的 JRE?

标签: windows batch-file jar java


【解决方案1】:

一个 JRE 目录有一个 bin/java.exe。

您可以简单地从该 JRE 运行一个 jar

<path_to_jre>/bin/java.exe -jar Executable.jar

如果您不想每次都打开控制台,只需将上述行放在 .bat 文件中并双击即可。

【讨论】:

  • 另见java commandjavaw 变体。 "javaw 命令与 java 相同,只是 javaw 没有关联的控制台窗口。使用 javaw 当您不希望出现命令提示符窗口时。但是,如果由于某种原因启动失败,javaw 启动器将显示一个包含错误信息的对话框。"
【解决方案2】:

从命令运行

<path_to_jre>/bin/java.exe -jar Executable.jar

(或使用 javaw.exe 在 JAR 启动后立即返回命令提示符)

或者设置环境变量

许多启动脚本分别尊重 JRE 和 JDK 的变量 JRE_HOMEJAVA_HOME。有些人不喜欢空格,所以使用短路径约定 (C:\Progra~1\Java\jre1.8.0_171)

在 64 位系统上:
Progra~1 = Program Files
Progra~2 = Program Files (x86)

或设置文件关联

通过双击启动 JAR。不幸的是,GUI(控制面板\所有控制面板项\默认程序\设置关联)非常糟糕,所以你必须在注册表中进行。

当控制面板设置被忽略时,这是我最喜欢的选择 32/64 位 JRE 的方法。

  1. 检查HKEY_CLASSES_ROOT\.jar中的默认值是jarfile
  2. 检查HKEY_CLASSES_ROOT\jarfile\shell\open\command 中的默认值是否指向您的JRE。

在我的 64 位环境中:

"C:\Program Files\Java\jre1.8.0_171\bin\javaw.exe" -jar "%1" %*

注意引号:javaw 路径包含空格; JAR 路径可以包含空格;传递的参数以空格分隔。

【讨论】:

    【解决方案3】:

    在与您的 jarfile 相同的文件夹中创建此批处理文件:

    @echo off
    set path=C:\Program Files (x86)\java\bin\;%path%
    java -version
    javaw -jar jaryouwanttorun.jar
    pause
    exit
    

    【讨论】:

      【解决方案4】:

      PowerShell语法如下

      & 'C:\Program Files\Java\jdk1.7.0_80\bin\java.exe' -jar .\Executable.jar -Xmx256m
      

      使用系统中安装的特定 java.exe 的路径。

      【讨论】:

        【解决方案5】:

        您可以更改 JAVA_HOME 的 Windows 环境变量(请参阅here)。将它指向您希望它运行的 JRE。我确定没有编程方式可以做到这一点(因为正确的 JRE 是在运行时加载的)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-03
          • 1970-01-01
          • 1970-01-01
          • 2018-08-25
          • 2021-03-17
          • 1970-01-01
          相关资源
          最近更新 更多