热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IntelliJ无法使用OpenJDK11识别JavaFX11

如何解决《IntelliJ无法使用OpenJDK11识别JavaFX11》经验,为你挑选了3个好方法。

我无法让IntellJ识别JavaFX包.使用OpenJDK 11的新JavaFX项目,在尝试构建项目时,IntelliJ无法识别JavaFX包.

我是openjfx:javafx-base-11从Maven回购中导入的.

我已经查看了其他问题,解决方案似乎包括检查字节码是否处于正确的级别(我的是),以及项目语言是否正确(我的是).

有人有主意吗?

pic 1

pic 2

pic 3

编辑:

错误:

在此输入图像描述



1> José Pereda..:

正如评论中所提到的,Starting Guide是从Java 11和JavaFX 11开始的地方.

像在Java 11之前一样工作的关键是要理解:

JavaFX 11不再是JDK的一部分

您可以将它作为SDK或常规依赖项(maven/gradle)以不同的方式获得.

即使项目不是模块化的,您也需要将它包含在项目的模块路径中.

JavaFX项目

如果您在IntelliJ中创建常规JavaFX默认项目(没有Maven或Gradle),我建议您从此处下载SDK .请注意,还有jmods,但对于非模块化项目,SDK是首选.

这些是运行默认项目的简单步骤:

    创建一个JavaFX项目

    设置JDK 11(指向本地Java 11版本)

    将JavaFX 11 SDK添加为库.URL可能是这样的/Users//Downloads/javafx-sdk-11/lib/.执行此操作后,您会注意到JavaFX类现在已在编辑器中识别.

JavaFX 11项目

    在运行默认项目之前,您只需将这些添加到VM选项:

    --module-path /Users//Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

Maven的

如果您使用Maven构建项目,请按照下列步骤操作:

    使用JavaFX原型创建Maven项目

    设置JDK 11(指向本地Java 11版本)

    添加JavaFX 11依赖项.

    
        
            org.openjfx
            javafx-controls
            11
        
        
            org.openjfx
            javafx-fxml
            11
        
    
    

执行此操作后,您会注意到JavaFX类现在已在编辑器中识别.

JavaFX 11 Maven项目

您会注意到Maven为您管理所需的依赖项:它将为javafx.controls添加javafx.base和javafx.graphics,但最重要的是,它将根据您的平台添加所需的分类器.就我而言,Mac.

这就是为什么你的jar org.openjfx:javafx-controls:11空的,因为有三个可能的分类器(windows,linux和mac平台),它们包含所有类和本机实现.

如果您仍想转到.m2仓库并手动从那里获取依赖项,请确保选择正确的(例如.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar)

    将默认maven插件替换为来自此处的插件.

    运行mvn compile javafx:run,它应该工作.

类似的工作也适用于Gradle项目,详见此处.

编辑

上面提到的入门指南包含IntelliJ的更新文档和示例项目:

没有Maven/Gradle的JavaFX 11,请参见非模块化样本或模块化示例项目.

使用Maven的JavaFX 11,请参阅非模块化示例或模块化示例项目.

带有Gradle的JavaFX 11,请参阅非模块化样本或模块化示例项目.


如果有人遇到模块路径问题,它需要在Windows上看起来像这样: - module-path ="C:\ Path\To\Your\JavaFX\lib"--add-modules = javafx.controls,javafx .fxml,javafx.base,javafx.media,javafx.graphics,javafx.swing,javafx.web注意"="以及它周围的引号.这对我有用,而任何其他方法都没有.此外,请记住-jar YourJar.jar参数需要在模块路径和add-modules选项之后.
嗨@JoséPereda。一段时间以来,我一直在努力阅读本指南,但是即使我完全按照您的编写来做,我也无法真正使IntelliJ运行我的代码。我仍然收到“错误:java:找不到模块:javafx.fxml”,依此类推。有机会进行私人聊天以帮助我解决此问题吗?谢谢。
当我为Gradle的示例项目构建发行版并运行它时,出现错误消息:“错误:缺少JavaFX运行时组件,并且是运行此应用程序所必需的”

2> Coder992..:

Java FX不再是JDK 11的问题。以下解决方案使用IntelliJ进行工作(尚未在NetBeans上进行过尝试):

    添加JavaFX全局库作为依赖项:

    设置->项目结构->模块。在模块中,转到“依赖关系”选项卡,然后单击添加“ +”号->库-> Java->从列表中选择JavaFX,然后单击“添加选定项”,然后单击“应用设置”。

    右键单击JavaFX项目中的源文件(src),然后创建一个新的 module-info.java文件。在文件内部编写以下代码:

           module YourProjectName    
           { requires javafx.fxml;
             requires javafx.controls;
             requires javafx.graphics;
              opens sample;}
    

我向您保证,这两个步骤将解决JavaFX的所有问题。

参考:学习编程频道制作了一个You Tube教程,将在5分钟内解释以上所有详细信息。我还建议您观看它以解决您的问题:https : //www.youtube.com/watch?v=WtOgoomDewo



3> Yo Apps..:

以上都不对我有用。我花了太多时间来清除出现的其他错误。我发现这是最简单,最好的方法。

这也适用于在Jdk 11、12和OpenJdk12上获取JavaFx!

该视频向您展示了JavaFx Sdk下载

如何将其设置为全局库

设置module-info.java(我更喜欢底部的模块)


module thisIsTheNameOfYourProject {
    requires javafx.fxml;
    requires javafx.controls;
    requires javafx.graphics;
    opens sample;
}

整个过程只花了我5分钟!


推荐阅读
author-avatar
PHP白姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有