当前位置: 首页 > 知识库问答 >
问题:

为什么不能在使用Azul Zulu版本的OpenJDK with FX将JavaFX项目升级到JDK 17之后找到JavaFX包?

戚翼
2023-03-14

我有一个JavaFX项目,并使用以下Azul Zulu Build of OpenJDK with JavaFX将项目升级到JDK 17

https://www.azul.com/downloads/?os=windows

有人知道为什么Intellij无法使用来自Azul Zulu Builds of OpenJDK with FX的JDK 17找到JavaFX包吗?

共有1个答案

阎英朗
2023-03-14

我提供了两种解决方案:

>

  • 使用包含JavaFX模块的Azul发行版(这是您要求的),

    使用不包括JavaFX的Azul发行版,并使用Maven Central的JavaFX模块,使用构建工具。

    我推荐使用构建工具的解决方案2。它的设置速度更快,并且为未来的开发工作提供了一种更便携、灵活和可扩展的方法。

    备用JDK

    这些指令对于其他JDK和JavaFX发行版也应该完全正常,例如Belsoft Liberica、Amazon Correto和Eclipse Temurin打包的发行版。

    要为JDK使用替代供应商,请选择从所选供应商下载适当的版本,或者:

    1. 手动使用下面概述的Add JDK选项,OR
    2. 自动地,让Idea执行从您选择的供应商的下载(使用下载JDK选项,如下所述)。

    解决方案1:将Azul发行版与内置JavaFX模块一起使用

    下载Azul JDK:

    1. 转到Azul下载站点,选择适当的版本、平台和软件包(使用JDK FX作为软件包,而不是JDK)

    >

  • 这是我对基于Intel的Mac版本的链接,但您的链接可能会因系统架构而异:

    • https://www.azul.com/downloads/?version=java-17 lts

    创建Java项目(不是新的JavaFX项目):

    >

    Project SDK|添加JDK...

    使用JavaFX下载选择提取Azul JDK的位置。

    保留默认选项,选择“下一步”几次。

    命名项目并选择Finish。

    创建一个JavaFX HelloWorld.java类:

    >

  • 右键单击src,选择New|JavaFX Application。

    将其命名为HelloWorld。

    将HelloWorld应用程序的内容编辑为:

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.stage.Stage;
    
    public class HelloWorld extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        @Override
        public void start(Stage primaryStage) {
            primaryStage.setScene(new Scene(new Button("hello, world")));
            primaryStage.show();
        }
    }
    

    使用Azul JDK JavaFX runtime在IDE中运行新的JavaFX应用程序:

    1. 打开HelloWorld。java类,单击栏中的运行应用程序图标,然后选择运行“HelloWorld”。main()'

    故障排除

    如果您执行了上述操作,并且找不到JavaFX类,那么您可能没有使用包含JavaFX的JDK。

    在这种情况下,除非您将JDK版本更改为包含JavaFX的版本,否则您应该从openjfx.io下载JavaFX SDK并遵循那里提供的Idea项目设置信息。

    解决方案2:使用Azul,但源于Maven Central的JavaFX模块

    下面的解决方案是将Azul runtime与使用Maven(或Gradle)的Maven中央存储库中的JavaFX模块一起使用。

    创建JavaFX项目:

    1. 文件|新建|项目…|JavaFX
    2. 根据需要编辑项目名称
    3. 保留默认选项,选择下一个|完成

    在项目中下载并使用Azul JDK

    1. 文件|项目结构|项目SDK |下载JDK
    2. 选择供应商Azul Zulu社区
    3. 下载| OK

    如果您想使用Azul下载并添加步骤,而不是IDE设置中用于新Java项目的默认JDK,那么只需要执行Azul下载并添加步骤。

    使用Azul JDK运行时和maven JavaFX模块在IDE中运行新的JavaFX应用程序:

    1. 打开HelloApplication。java类,单击栏中的运行应用程序图标,然后选择运行“HelloApplication”。main()'

  •  类似资料:
    • 问题内容: 为了避免在构建Java源代码时出现有关特殊字符的警告,我将这一行放在我的行中,在升级到Gradle 2.0之前,该行运行良好: 升级后,失败并显示以下错误: 我该如何解决? 问题答案: 将行更改为 解决了这个问题。

    • 今天我安装了JDK11,我所有的JavaFX东西都变得混乱了。公平地说,甲骨文可以做他们想做的事情。我试图让我的项目回到可运行的状态,这是我第一次遇到这种模块化的东西,所以不知道到底发生了什么。 我已经设法将这些库作为Maven中的依赖项导入(尽管它在Maven中找不到某些库的版本11,我最终使用11-EA+19来实现javafx-controls等--不管怎样…),所以我的代码可以很好地编译这些

    • 为了避免在构建Java源代码时出现有关特殊字符的警告,我在中添加了这一行,在升级到Gradle2.0之前,这一行工作良好: 我该怎么解决呢?

    • 本文向大家介绍react-native 将现有项目升级到最新的RN版本,包括了react-native 将现有项目升级到最新的RN版本的使用技巧和注意事项,需要的朋友参考一下 示例 在app文件夹中,找到package.json并修改以下行以包括最新版本,保存文件并关闭。 在终端: 其次是            

    • 我用Play2.0创建了一个应用程序。我实现了scribe-java库来使用一些OAuth服务。直到今天,一切都很好,但当我升级jdk并重新启动服务器时,我不能使用scribe-java库。它似乎在sun.security包中使用了和类,但找不到。 “java-version”返回: 播放2.0 StackTrace:

    • 问题内容: 因此,我已经安装了Node.js,现在当我尝试安装Mongoosejs时,出现一个错误消息,告诉我我没有所需的Node.js版本(我需要v0.4.11和v0.4.12)。 如何升级到此版本?我想我可以重新安装最新版本,但是在确定不会删除“节点”文件夹中的项目文件夹之前,我不想这样做。 问题答案: Linux / Mac: 该模块使版本管理变得容易: 对于最新的稳定版本: 对于最新版本: