我今天在我的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 version“1.8.0_45-internal”
OpenJDK Runtime Environment(build 1.8.0_45-internal-b14)
OpenJDK 64位服务器VM(版本25.45-b02,混合模式)
答案 0 :(得分:16)
根据 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
希望这有帮助。
答案 1 :(得分:0)
对于Java Compiler 8或更高版本,请执行以下操作:
答案 2 :(得分:0)
A)确保您使用的是兼容的JDK,例如1.8,并且
B)在Eclipse Project Facets中配置Java的兼容版本。
对于Java 11,也会出现此错误,因为JavaFX已从Java 11中删除并且是独立的
答案 3 :(得分:0)
以下是使用 Maven 在Ubuntu Linux 上进行设置的方法:
1)安装OpenJFX软件包,检查将文件放在何处。
sudo apt install openjfx
dpkg-query -L openjfx
您可能最终会获得JDK 11的版本。在这种情况下,要么安装新的OpenJDK,要么为JDK 8设置OpenJFX的版本。
2)将其作为system
范围的依赖项放入您的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>