【问题标题】:Install Java Web Start from an Application从应用程序安装 Java Web Start
【发布时间】:2013-11-29 22:13:48
【问题描述】:

我有一个简单的 Java 程序,它使用:

Runtime.getRuntime().exec("/usr/bin/javaws", [path for JNLP file]) 

使用 java web start 打开 JNLP 文件。

但是,我需要处理没有安装 javaws 的情况。所以我需要检查它是否已安装,如果没有,请安装它。知道如何做其中任何一个(或两者)吗?

【问题讨论】:

  • 不是每个 JRE 安装都包含 Web Start 吗?如果您在 JVM 中运行,肯定已经安装了 Web Start。

标签: java java-web-start


【解决方案1】:

首先,您假设 javaws 的路径是 /usr/bin/javaws,但事实可能并非如此。

如果就这么简单,那么你可以检查文件是否存在:

File javawsFile = new File("/usr/bin/javaws");
if (! javawsFile.exists()) {
    System.out.println("javaws not installed");
} 

话虽如此,java 不必安装到任何特定位置。因此你不能假设它在/usr/bin/。很多人会下载 java 二进制 zip 并简单地解压到他们选择的位置,并设置环境变量JAVA_HOME

现在,您可以继续解析 JAVA_HOME 变量 - 但即便如此,它也只会告诉您是否安装了 javaws - 或没有。

如果未安装 javaws,则实际上没有其他方法可以安装它 - 除了提示用户转到 java 网站并下载它。

你给出的路径是 *nix 风格的。在这种情况下,它需要 root 访问权限才能安装新应用程序 - 这不是您可以简单制造的东西。

即使您的用户已经以 root 身份运行您的应用程序,我仍然会对此保持警惕。在用户的机器上安装软件不是您的责任。

【讨论】:

  • 如果您在答案的 1/2 中所说的是真的(我完全同意),那么对于 d/l Java 来说应该是微不足道的,并将其解压缩到一个临时文件夹中,然后设置 JAVA_HOME 并运行 javaws。不应该吗?你怎么知道 pr0crstnation101 的职责是什么?我不知道,所以我只是建议这是可能的,其余的留给他自己。
  • @ajeh 可以下载 javaws 应用程序并将其放在临时目录中。但是,这种行为听起来是典型的间谍软件或恶意代码 - 您正试图在未经用户同意的机器上安装软件。此外,下载正确版本的 javaws 会有点棘手。您必须确定机器的体系结构并下载正确的 javaws 版本。总而言之,这是 (A) 可疑行为,并且可能会冒犯防病毒软件,并且 (B) 使其跨平台可靠会非常棘手。
  • 再一次,你不知道用户是否同意,你只是怀疑请求者做错了什么。他可能是在受控环境中的公司网络上执行此操作。我们是谁来监管互联网?
  • @ajeh,我认为他将这些项目确定为可能不可能的原因,而不是 OP 不应该这样做的原因。
  • 是的,我知道文件路径不一定正确;这是我需要解决的另一个问题。说到这一点,使用“$ which javaws”可以为我找到正确的 javaws 目录(在我的计算机上它给了我相同的目录)吗?至于在找不到它的情况下安装javaws,重点是:不要以草图方式安装东西。我最终可能只是告诉用户他们需要安装它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2012-10-06
  • 1970-01-01
相关资源
最近更新 更多