2

我有一个现有的 Java 程序,我正在提供给一些.... 不是我的技术倾向的客户。他们使用 Linux、Windows 的组合,而且很少有苹果机器,这就是我选择 Java 来开发程序的原因。问题是他们在尝试启动程序时不断打电话给我,因为他们没有已安装 JRE。有没有办法:

  1. 导入一个库,它会给我某种命令来检查。
  2. 将一些东西添加到将检查 JRE 的程序中。或者(我真的不想这样做,因为我首先选择了java)
  3. 用 C++ 编写一些东西来检查 JRE。

我的目标:

  1. 检查机器上是否安装了 JRE
  2. 如果是:启动程序
  3. 如果否:弹出消息“未找到 Java 环境,从 Java 网站下载”。然后我会将他们直接带到他们点击“运行”并安装的链接。

// 我会做类似的事情

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 程序),但如果可能的话,我更愿意保持这种通用性。

如果没有简单的解决方法,我将制作一个自述文件,其中包含指向检查系统上 JRE 的 Java 网站的链接,但用户必须做的工作量越少越好。

4

5 回答 5

1

check for JRE on system

Use deployJava.js as mentioned in the Java Web Start info. page.

..designed to ensure a suitable minimum version of Java is installed before providing a link to a JWS app. or launching an applet.

If it is a rich client desktop app. (e.g. applet or frame), deploy it using Java Web Start.

于 2012-08-24T13:46:41.243 回答
1

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

有些开发人员也将 JSmooth 或 Launch4J 用于本机启动器。

于 2012-08-24T13:29:20.220 回答
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定义了环境变量,那么javaw.exe将使用您的应用程序 jar 文件启动。javaw.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
于 2012-08-25T18:19:35.020 回答
0

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

于 2012-08-24T13:33:04.307 回答
0

您为什么不这样做只是创建批处理和 bash 文件并要求您的客户根据操作系统运行一个或另一个

于 2012-08-24T13:28:33.950 回答