如何确定 Windows 系统是否安装了 Java 虚拟机?

4
使用代码,如何确定Windows中是否安装了Java VM(以及它的版本)。

1
Java代码可以在没有Java虚拟机的情况下运行吗? - Dante May Code
也许OP的意思是要从批处理文件或其他语言中检测?请解释。 - mellamokb
他没有说代码必须是Java。 - Ken
1
请前往控制面板并自行检查,除非提供更多信息,否则此问题属于Superuser.com! - Narayan
运行“Hello World”Java程序,如果它打印出“Hello World”,那么你就完成了 :) - Ant's
5个回答

6
假设您希望从批处理文件中编程确定此内容,您可以使用安装在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。

希望对您有所帮助。


5
我想也许您有兴趣调用这些内容:
System.getProperty("os.name");
System.getProperty("java.version");

2
不确定这是否是楼主要找的,但这正是我在寻找的。谢谢。 - NeilMonday

4

Oracle的deployJava.js不仅可以检查用户计算机上是否有特定的Java最低版本,而且如果他们使用Windows操作系统,则可以在需要时引导他们下载和安装Java。

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


3

无法通过Java代码检测JVM是否已安装。没有JVM的存在,Java代码无法运行。因此,如果您能够运行编译后的代码,则表示JVM已安装。


2
我不认为可以在Windows上“安装”JVM。更有相关性的是要检查您是否在硬盘驱动器的目录中拥有JRE,并且是否可以通过引用其“bin”文件夹中的参考路径来轻松访问此JRE环境变量中的“PATH”。
您可以尝试从代码中运行“java -version”并收集输出来检查此内容。
如果您收到一条消息,指出“'java'不是内部或外部命令,可操作的程序或批处理文件。”,则表示您的JRE未被引用。

1
虽然Microsoft Windows仍然支持PATH变量,但它更倾向于使用注册表来解析程序文件名为完整路径。因此,仅仅检查PATH变量的条目是不够的。正如你建议的那样,运行"java -version"似乎是最可靠和最简单的解决方案。 - Hendrik Brummermann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接