【问题标题】:How to determine if the Java VM is installed on Windows?如何确定 Java VM 是否安装在 Windows 上?
【发布时间】:2011-03-19 15:14:34
【问题描述】:

使用代码,如何确定在 Windows 中安装了 Java VM(及其版本)。

【问题讨论】:

  • Java 代码可以在没有 Java VM 的情况下运行吗?
  • 也许 OP 意味着从批处理文件或其他语言中检测?请解释一下。
  • 他没有说代码必须是Java。
  • 转到控制面板并自行检查,除非提供更多信息,否则这属于 Superuser.com!
  • 运行hello world java程序,如果打印出hello world,那么你就完成了:)

标签: java windows jvm


【解决方案1】:

假设您希望通过批处理文件以编程方式确定这一点,您可以使用安装在windows\system32 中的reg.exe 工具。

这个工具的烦人之处在于它无法让它只返回一个退出代码,所以你必须通过重定向到无处来抑制它的输出。当该值不存在时,它也会生成一个错误消息。

@echo off
rem
rem DetectJvmInstalled.cmd
rem
reg.exe query "HKLM\Software\JavaSoft\Java Runtime Environment" /v "CurrentVersion" > nul 2> nul
if errorlevel 1 goto NotInstalled

rem Retrieve installed version number.
rem The reg.exe output parsing found at http://www.robvanderwoude.com/ntregistry.php
set JvmVersion=
for /F "tokens=3* delims= " %%A IN ('reg.exe query "HKLM\Software\JavaSoft\Java Runtime Environment" /v "CurrentVersion"') do set JvmVersion=%%A
rem if "%JvmVersion%" == "" goto NotInstalled

:Installed
echo JVM Version = %JvmVersion%
exit /b 0

:NotInstalled
echo JVM Not installed.
exit /b 1

注意事项:

  • 有两种重定向到nul 设备,一种用于标准输出,一种用于标准错误。
  • 检测与值解析分开进行,以避免在值不存在时显示ERROR... 消息。
  • delims= 选项后有一个空格字符(因为空格是分隔符)。
  • 如果成功(已安装)批处理文件返回错误级别/退出代码为零,如果失败(未安装)返回 1。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我想也许你有兴趣调用这些:

    System.getProperty("os.name");
    System.getProperty("java.version");
    

    【讨论】:

    • 不确定这是否是 OP 正在寻找的,但这是我正在寻找的。谢谢。
    【解决方案3】:

    Oracle 的deployJava.js 不仅可以检查用户计算机上可用的特定最低 Java 版本,而且如果他们在 Windows 上,如果需要,可以指导他们下载和安装它。

    通常 deployJava.js 用于为使用 Java Web Startapplets 启动的应用程序提供启动按钮,您可以使用 JWS 表单链接到“裸”Jar 文件(没有依赖项)。

    【讨论】:

      【解决方案4】:

      无法检测 JVM 是否是从 Java 代码安装的。 Java 代码在没有 JVM 的情况下无法运行。因此,如果您能够运行已编译的代码,则安装 JVM。

      【讨论】:

        【解决方案5】:

        我真的不认为可以在 Windows 上安装 JVM。检查您的硬盘驱动器目录中是否有 JRE,以及是否可以通过在 PATH 环境变量中引用其 bin 文件夹轻松访问此 JRE,我会更相关。

        您可以通过尝试从代码中运行 java -version 并收集输出来检查这一点。

        如果您收到一条声明 'java' is not recognized as an internal or external command, operable program or batch file. 的消息,则说明您的 jre 未被引用。

        【讨论】:

        • 虽然 Microsoft Windows 仍然支持 PATH 变量,但它更喜欢它的注册表来将程序文件名解析为其完整路径。因此,仅检查 PATH 变量的条目是不够的。正如您所建议的,仅运行“java -version”似乎是最可靠和最简单的解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 2014-10-26
        相关资源
        最近更新 更多