java - 如何确定Java VM是否安装在Windows上?

标签 java windows jvm

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

最佳答案

假设您希望通过批处理文件以编程方式确定这一点,您可以使用安装在 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= 选项后有一个空格字符(因为空格是分隔符)。
  • 如果成功(已安装),批处理文件返回错误级别/退出代码 0,如果失败(未安装),则返回 1。

希望对您有所帮助。

关于java - 如何确定Java VM是否安装在Windows上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362941/

相关文章:

java - 我无法解决尝试在空对象引用上调用虚拟方法 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()'

windows - 以编程方式将键盘更改为 Dvorak

java - Emma 与 Java 版本的兼容性

java - 为什么这个简单的 JSON 编码示例在 Apache Camel 中不起作用?

java - JTable 内带有图像的 JButton。怎么让它变成动画呢?

windows - 确定文件是否正在 Windows 上的 Perl 中使用

python - sqlalchemy 寻找字符串形式的服务器版本,而不是类似字节的对象

java - 处理 JDialog 后 JVM 不会关闭

gradle - 如何在IntelliJ中调试Gradle文件(build.gradle除外)?

java - 正则表达式删除 ID 号