检查系统上的JRE

时间:2012-08-24 13:25:41

标签: deployment installer java

我有一个现有的Java程序,我给一些....不是那么技术上倾向于我的客户。他们使用Linux,Windows的组合,很少有苹果机器,这就是为什么我选择Java来开发程序的原因。问题是当他们尝试启动程序时他们一直在调用我,因为他们没有已安装JRE。有没有办法:

  1. 导入一个lib,它会给我一些命令来检查。
  2. 向将检查JRE的程序添加内容。 或者(我真的不想这样做,因为我首先选择了java)
  3. 用C ++编写一些可以检查JRE的内容。
  4. 我的目标:

    1. 检查机器上是否安装了JRE
    2. 如果是:启动程序
    3. 如果否:弹出一条消息,说“找不到Java环境”,从Java网站下载"。然后我会把他们直接带到他们点击的链接" run"并安装。
    4. //我会做类似

      的事情
      if (JRE.exists()) // maybe use a pathname that would only show up if a JRE is installed
      {
          // launch program
      }
      else
      {
          // launch Java installer
      }
      system.exit(0);
      

      我理解这在java中真的很难(因为你不能在没有JRE的情况下运行Java程序)但我宁愿尽可能保持这种通用性。

      如果没有简单的解决方法,我只会制作一个read-me文件,其中包含指向系统上JRE的java网站链接,但用户必须完成的工作量最少越好。

5 个答案:

答案 0 :(得分:1)

我建议你使用像IzPack这样的Java安装程序或其他免费工具。使用其中一个,您可以创建安装程序并生成本机启动程序。这可以配置为搜索Java,如果没有找到,可以帮助用户安装它。

有些开发人员也使用JSmooth或Launch4J作为原生发射器。

答案 1 :(得分:1)

  

检查系统上的JRE

使用Java Web Start info.页面中提到的deployJava.js

  

..旨在确保在提供指向JWS应用程序的链接之前安装适当的最低Java版本。或启动小程序。

如果是富客户端桌面应用。 (例如applet或frame),使用Java Web Start部署它。

答案 2 :(得分:1)

如果您不能使用Java Web Start,虽然我建议使用它,但您可以编写简单的脚本来检测Java。

适用于Windows (。bat):

if not "%JAVA_HOME%" == "" (
    "%JAVA_HOME%\bin\javaw.exe" -jar YourApp.jar
) else (
    start http://java.com/download/
)

如果定义了JAVA_HOME环境变量,那么将使用您的应用程序jar文件启动javaw.exejavaw.exe可执行文件使用窗口子系统,因此它在没有控制台窗口的情况下运行。

如果未设置JAVA_HOME,它将在默认浏览器中打开Java下载页面。

有关更多选项,您可以使用JScript;使用它,您可以向用户显示未安装Java的警告,然后打开浏览器进行下载。

对于Linux (。sh):

if [ "$JAVA_HOME" != "" ]; then
    $JAVA_HOME/bin/java -jar YourApp.jar &
else
    echo JAVA_HOME is not set: Java Runtime Environment (JRE)
    echo is not installed your system.
    echo Either install it from http://java.com/download/
    echo or set JAVA_HOME environment variable.
fi

答案 3 :(得分:0)

为什么不直接创建批处理文件和bash文件,并要求您的客户依赖操作系统运行其中一个

答案 4 :(得分:0)

如果JRE安装在系统上,则在Windows和Linux上都设置了JAVA_HOME环境变量,它包含JRE的路径。您可以检查此变量是否已设置并相应地继续。