繁体   English   中英

使用 Java 9 和 Intellij Idea 的 JavaFX 不存在

[英]JavaFX does not exist using Java 9 and Intellij Idea

我正在使用 Intellij Idea 编译一个使用 Maven 依赖项的项目,Intellij 一直告诉我我的项目有 50 个错误,因为 JavaFX 不存在。

Intellij 并没有将我代码中的所有 javafx 依赖项都高亮显示为错误,只是一旦我按下运行并编译程序,就会说 JavaFX 中的所有内容都不存在。

我尝试重新下载最新的 JDK(Java 9.0.1),但没有解决。 我进入了默认项目结构和项目结构以确保它使用正确的 jdk 并且没有解决问题。 我使用的所有 jdks 似乎都列出了项目中包含的 javafx 包。

这也只是我与朋友合作的特定项目的问题。 我们可能不得不将所有代码移到一个新项目中,但是我不确定这是否会解决任何问题。

有什么建议么?

尝试在“项目结构|项目”中将项目语言级别设置为“9”

好的,我知道我的问题是什么。

除了Try to set project language level to "9" in "Project Structure | Project"上面提到的Try to set project language level to "9" in "Project Structure | Project"Try to set project language level to "9" in "Project Structure | Project"之外,我在一些 pom.xml 中有一个 maven 设置,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
    </configuration>
</plugin>

并且java.version被定义为1.8以上某处。 我只需要把它改成9

将 JavaFX 项目从 Java 8 升级到 Java 9 后,我遇到了这个问题。

在检查 IntelliJ 和 Maven pom 中项目和模块的常用语言级别设置后,我发现问题在于该模块在 Java 编译器首选项中被显式设置为生成 Java 8 字节码。

查看Preferences -> Build, Execution, Deployment -> Compiler -> Java Compiler 检查Project bytecode version是否未设置(或正确设置),并且您的模块未在Per-module bytecode version列出且值不正确。

File --> Project Structure-->Module

此处的语言级别为我设置为 5。 将其提高到 9 以允许类等,并且与上述相同的错误为我解决。

我错过了 gradle.build 中的模块。 不得不更新

javafx {
  version = "11"
  modules = [ 'javafx.controls', 'javafx.fxml' ]
}

在 Java9+ 中,JRE/JDK 中不包含一些模块。 解决方案是显式添加这些库。

对于 Java9 的 maven pom 文件,我使用了

<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>11</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-fxml</artifactId>
    <version>11</version>
</dependency>

比我可以使用所需的库来包含 TextField。

import javafx.scene.control.TextField;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM