【问题标题】:What do I need to install on the end users computer to run my Java application made with eclipse我需要在最终用户计算机上安装什么来运行我用 eclipse 制作的 Java 应用程序
【发布时间】:2021-01-15 15:42:43
【问题描述】:

我使用 eclipse 制作了我的第一个 java/JavaFX 应用程序并导出了 Runnable Jar 文件。在我的电脑上使用以下命令运行良好:

java --module-path ".\lib" --add-modules=javafx.controls -jar ".\myProgram.jar"

但是当我尝试在另一台计算机上运行时,我收到以下错误:

无法识别的选项:--module-path 错误:无法创建 Java 虚拟机。错误:发生了致命异常。程序将 退出。

在我的计算机上,Java 版本给了我:

java版本“15”2020-09-15

Java(TM) SE 运行时环境(内部版本 15+36-1562)

Java HotSpot(TM) 64 位服务器 VM(内部版本 15+36-1562,混合模式, 分享)

在用户的计算机上我得到:

java 版本“1.8.0_201”

Java(TM) SE 运行时环境(内部版本 1.8.0_201-b09)

Java HotSpot(TM) 64 位服务器 VM(内部版本 25.201-b09,混合模式)

Java 的最低版本是多少,我需要安装一台用户计算机才能完成这项工作。我还需要在 Eclipse 中做些什么才能在最终用户计算机上完成这项工作。我应该使用其他版本的 Java 来构建我的应用程序吗?我迷路了。

【问题讨论】:

  • 为什么不编译早期版本,例如第 8 版?
  • 如果您使用每个 JDK 附带的 jlink 命令,您就不必在用户的计算机上安装任何 Java。见stackoverflow.com/questions/53453212/…
  • VGR,我试图将我的项目更改为模块化系统,以便我可以这样做,但我遇到了与我正在使用的外部 JAR 的几个冲突问题。所以我现在被困在那一边。

标签: java javafx deployment


【解决方案1】:

正确答案取决于上下文,但它不是 java9 就是 java11。 “java9”,从某种意义上说,这是“什么是最小版本”的直接答案。 'java11' in,这实际上是您应该安装的,因为此时 没有 java9。 java9 不是长期支持版本。几乎没有人(甚至没有预言机,除非您支付相当高的价格)再支持它。

Java8 和 Java11 是您应该在最终用户计算机上安装的唯一 Java。如果您使用的是模块,那么 java11 就是答案。

【讨论】:

  • 好吧,因为这个应用程序是在 Java 15 上开发的,所以它可能也是为 Java 15 编译的,因此 jar 文件不会在 Java 11 环境中运行。甚至有可能使用了某些在 Java 11 上也没有的新功能。因此,在不知道这一点的情况下,不可能给出明确的答案。
【解决方案2】:

您需要为要在其上运行应用程序的每台新计算机设置兼容的 Java 安装。一种简单的方法是使用 jlinkruntime 目录中为您的应用程序构建兼容的 JRE:

 jlink --module-path ".\lib" --add-modules=javafx.controls --output myruntime

您可以添加这些额外的 jlink 参数来减小图像大小: --strip-debug --no-man-pages --no-header-files --compress=1

然后您应该能够使用新的 JRE 运行时映像在当前机器上运行您的应用程序,该映像现在包含 JavaFX javafx.controls 模块及其所有依赖项:

myruntime\bin\java -version
=> should confirm: java version "15"

myruntime\bin\java javafx.application.Application
=> should report: Error: Main method not found in class javafx.application.Application
=> This confirms JavaFX is part of the JRE

myruntime\bin\java -jar ".\myProgram.jar"
=> should run your application

然后你可以将runtime目录和你的代码复制到其他机器上,并以与当前机器相同的方式运行,只要你保持相同的相对目录结构。

如果一切正常,您可以尝试为运行时 JRE + 您的代码构建 Windows MSI 安装包,以便您可以为自己的应用程序使用标准 Windows 安装程序。见jpackage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2015-04-16
    • 2011-05-21
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多