作者:PHP白姐 | 来源:互联网 | 2022-12-04 09:31
我无法让IntellJ识别JavaFX包.使用OpenJDK 11的新JavaFX项目,在尝试构建项目时,IntelliJ无法识别JavaFX包.
我是openjfx:javafx-base-11
从Maven回购中导入的.
我已经查看了其他问题,解决方案似乎包括检查字节码是否处于正确的级别(我的是),以及项目语言是否正确(我的是).
有人有主意吗?
编辑:
错误:
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类现在已在编辑器中识别.
在运行默认项目之前,您只需将这些添加到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类现在已在编辑器中识别.
您会注意到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分钟!