【问题标题】:The import javafx cannot be resolved导入 javafx 无法解析
【发布时间】: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,混合模式)

【问题讨论】:

标签: java eclipse 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 版本。

    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

    【讨论】:

    • 英文 Eclipse 中没有 facets。
    【解决方案3】:

    对于 Java Compiler 8 或更高版本,请执行以下操作:

    1. 右键单击项目
    2. 选择构建路径 ----> 添加库

    然后您将看到以下屏幕截图:

    确保您已经下载并安装了 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。
      猜你喜欢
      • 2019-06-17
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2012-04-04
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多