导入javafx无法解析

时间:2015-09-17 12:30:36

标签: java eclipse javafx

我今天在我的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,混合模式)

4 个答案:

答案 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或更高版本,请执行以下操作:

  1. 右键单击项目
  2. 选择构建路径---->添加库
  3. 然后,您将看到以下屏幕截图:

    Choose a JDK 8 or above

    确保已下载并安装了JDK 8或更高版本

    按完成按钮后,代码中的所有Java FX错误都将消失。

    注意先决条件:

    在NetBeans 8.0.1上安装并测试了JDK 9

答案 2 :(得分:0)

A)确保您使用的是兼容的JDK,例如1.8,并且

B)在Eclipse Project Facets中配置Java的兼容版本。

  1. 右键单击Java项目,选择“属性”
  2. 选择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

答案 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>