【问题标题】:how can I get javafx 14 to compile and run?如何让 javafx 14 编译和运行?
【发布时间】:2020-09-09 11:47:03
【问题描述】:

我目前正在尝试学习 javafx,但我的笔记本电脑没有安装 javafx 的问题。我正在使用 Windows 10 机器,我目前安装了 jdk14,它工作正常,因为我最近一直在运行和编译 java 代码。我浏览了整个互联网,找不到任何指导我如何安装 javafx 的链接,我找到的所有链接都在安装它并使用 Eclipse、netbeans 和 intellij 等 IDE 运行它,但我正在使用 atom做我的编码。

我已经从here 下载了最新版本的 javafx 14,我假设我必须将路径变量添加到 Windows 中的环境变量中,但我不确定这样做是否能让事情正常工作,所以我我想我会在这里发帖以获得更多知识渊博的帮助。

我知道 jdk 7 或 jdk 8 内置了 javafx,但我想保留 jkd 14,因为我已经使用 jdk 14 编写了程序。

【问题讨论】:

  • Atom 是否支持 Maven?我强烈建议使用 Maven 等依赖项管理工具管理版本 >= 11 的 JavaFX。如果是这样,您应该可以在openjfx.io/openjfx-docs 修改其他 IDE 的说明
  • 只需使用Liberica OpenJDK 版本。他们仍然分发他们的运行时 (>= 11) 与匹配的 JavaFX 编译版本(出于商标原因重命名为 LibericaFX,但它就在那里)。

标签: java javafx installation atom-editor


【解决方案1】:

OpenJFX

首先,要知道 Oracle 已将 JavaFX 的实现开源为 OpenJFX 项目,这是 OpenJDK 项目的子项目。

JavaFX/OpenJFX 的进一步开发现在由Gluon 公司领导。 OpenJFX 的发展势头强劲,版本 11、12、13、14 以及现在的预发布 15 几乎与 Java 11、12、13、14 和 15 的发布同步推出。

我推荐以下方法之一,而不是手动下载 JavaFX:

  • 获取捆绑了 OpenJFX 的 JDK
  • 使用依赖管理器将 OpenJFX 自动下载到您的应用中

JavaFX 与 JDK 捆绑

将您的 Java 实现替换为捆绑了 JavaFX 的开源实现(称为 OpenJFX)的实现。

您至少可以找到两个这样的捆绑 JDK:

  • LibericaFXfrom BellSoft 就是这样一种基于 OpenJDK 项目的 Java 实现。
  • ZuluFX 来自Azul Systems,宣布here。提示:在他们的下载页面上,使用 Java Package 弹出菜单选择 JDK FX 或 JRE FX。截至 2020 年 5 月,他们尚未发布 JavaFX 包的第 14 版,但他们有 ZuluFX 的第 8、11 和 13 版。我建议稍后再回来查看 14,或联系公司。 ZuluFX 是免费的,如果您有兴趣购买对 JavaFX 的支持,我们会邀请您讨论。

这是我为帮助人们选择 Java 实现的供应商而制作的流程图。注意“捆绑的 OpenJFX?”靠近底部的分支。

OpenJFX 作为依赖项

我不知道 Atom 是否可以与依赖项管理器一起使用,但供您参考……

配置您的构建工具,例如 Maven 或 Gradle,以自动下载和捆绑 OpenJFX 作为依赖项。

对于 Maven,here 是 javafx-controls 的当前 POM 配置,适用于 Java 和 OpenJFX 版本 14。您可能还需要 JavaFX Maven 插件 Maven Mojo (javafx-maven-plugin)。

以下是基于我当前 JavaFX 应用程序中真实 POM 的示例 POM。

<project xmlns = "http://maven.apache.org/POM/4.0.0"
         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>work.basil.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>14</maven.compiler.source>
        <maven.compiler.target>14</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>14.0.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>14</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.4</version>
                <configuration>
                    <mainClass>work.basil.jartran.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

您可以使用 Maven archetype provided by the OpenJFX project 创建基于 Maven 的项目。上面看到的 POM 将自动为您创建。您可能需要更新版本号。

【讨论】:

    【解决方案2】:

    JavaFX 很容易设置为与 JDK14 一起使用。我从您提到的站点获取了 v14“JavaFX Windows x64 SDK”版本。它是一个 ZIP,因此只需将其解压缩到本地目录即可。我的情况是:C:\java\javafx-sdk-14

    然后,您可以添加任何需要与 JDK14 一起使用的 JavaFX jar,方法是添加引用自:

    C:\java\javafx-sdk-14\lib\javafx.BLAH.jar
    

    当您运行应用程序时,您需要将 JavaFX 模块添加到用于 Java.exe 的命令中 - 在我的情况下,我只使用 javafx.controls (=>javafx.graphics/javafx.base) 的依赖项,所以我将此添加到启动我的应用程序的命令中:

    --module-path="C:\java\javafx-sdk-14\lib" --add-modules=javafx.controls
    

    一旦您知道您需要哪些 JavaFX 模块,您还可以使用 jlink 命令和“JavaFX Windows x64 jmods”版本打包一个新的 JRE,包括 JavaFX - 这避免了需要“--module-path / --add-modules”每个发射器。示例我将 jmods 版本保存到 C:\java\javafx-jmods-14,这会生成一个包含 JavaFX 的独立 JRE:

    jlink --module-path "C:\java\javafx-jmods-14;mods" --add-modules javafx.controls --output C:\jre.and.javafx
    

    然后在运行时我启动的所有命令都只是以下的变体:

    C:\jre.and.javafx\bin\java.exe --class-path ..\jars\BLAH.jar package.ClassName 
    

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 2022-07-16
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      相关资源
      最近更新 更多