导入 javafx 无法解析
Posted
技术标签:
【中文标题】导入 javafx 无法解析【英文标题】:The import javafx cannot be resolved 【发布时间】:2015-12-14 07:46:53 【问题描述】:我今天在我的 Ubuntu Linux 上安装了 Eclipse IDE,然后使用“安装新软件”安装了 JavaFX,当我创建 javafx 项目时,我在 Main.java 中收到以下错误:
无法解析导入 javafx。
所以,我列出了以下目录来搜索“jfxrt.jar”:
ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
但我没有找到“jfxrt.jar”。
java -version
输出:
openjdk 版本“1.8.0_45-internal”
OpenJDK 运行时环境(构建 1.8.0_45-internal-b14)
OpenJDK 64 位服务器 VM(内部版本 25.45-b02,混合模式)
【问题讨论】:
AFAIK OpenJDK 不附带 JavaFX。您需要在其上安装 OpenJFX。见wiki.openjdk.java.net/display/OpenJFX/Main 我安装了 JDK 8,JavaFX 也安装了它。谢谢。 【参考方案1】:以下是在 Ubuntu Linux 上使用 Maven 进行设置的方法:
1) 安装 OpenJFX 包,检查文件放在哪里。
sudo apt install openjfx
dpkg-query -L openjfx
您最终可能会得到 JDK 11 的版本。在这种情况下,请安装新的 OpenJDK,或者为 JDK 8 设置 OpenJFX 的版本。
2) 将其作为 system
-scoped 依赖项放入您的 Maven 项目中。
请注意,这是一种懒惰且不太好的方式。正确地,您应该像这样安装 jar:
dpkg-query -L openjfx | grep -E '.jar$' | xargs -l -I \ mvn install:install-file -Dfile="" -DgroupId=javafx \ -DartifactId=$(echo $JAR | tr '.' '-') -Dversion=1.0 -Dpackaging=jar
然后将其用作普通的
compile-scoped
依赖项。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.source.level>1.8</project.source.level>
<project.target.level>1.8</project.target.level>
<javafx.dir>/usr/share/openjfx/lib</javafx.dir>
</properties>
<dependencies>
<!-- JavaFx :
sudo apt install openjfx
dpkg-query -L openjfx
-->
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-base</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.base.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-controls</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.controls.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.fxml.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.graphics.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-media</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.media.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-swing</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.swing.jar</systemPath>
</dependency>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx-web</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$javafx.dir/javafx.web.jar</systemPath>
</dependency>
</dependencies>
【讨论】:
【参考方案2】:A) 确保您使用的是兼容的 JDK,例如 1.8,并且
B) 在 Eclipse Project Facets 中配置兼容的 Java 版本。
-
右键单击Java项目,选择属性
选择Project Facets,找到Java,设置1.8版
对于 Java 11,也会出现此错误,因为 JavaFX 已从 Java 11 中删除并作为独立版本提供
更多信息: https://blogs.oracle.com/java-platform-group/the-future-of-javafx-and-other-java-client-roadmap-updates
【讨论】:
英文 Eclipse 中没有 facets。【参考方案3】:对于 Java Compiler 8 或更高版本,请执行以下操作:
-
右键单击项目
选择构建路径 ----> 添加库
然后您将看到以下屏幕截图:
确保您已经下载并安装了 JDK 8 或更高版本
当您按下完成按钮时,代码中的所有 Java FX 错误都会消失。
注意先决条件:
在 NetBeans 8.0.1 上安装和测试 JDK 9
【讨论】:
【参考方案4】:根据 Ubuntu Vivid 中的packages list,有一个名为 openjfx 的包。这应该是您正在寻找的候选人:
JavaFX/OpenJFX 8 - Java 的富客户端应用平台
您可以通过以下方式安装它:
sudo apt-get install openjfx
它为 Ubuntu 系统上的 OpenJDK 安装提供 following JAR files:
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfxswt.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/ant-javafx.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/javafx-mx.jar
希望这会有所帮助。
【讨论】:
为什么必须手动下载包?不是嵌入到jdk里面吗? 不,这些文件是分开分发的。 是的,我找到了。 javafx 与 jdk 分离,因为我认为 jdk11 @Panagiss - 即使是从 8 开始的版本,OpenJDK 也不包含 javafx。以上是关于导入 javafx 无法解析的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Spring Boot 解析 JavaFX 应用程序的占位符
JavaFx SceneBuilder 2.0 无法解析自定义控件