Java使用 Java 9 和 Intellij Idea 不存在 FX

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 包。

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

有什么建议吗?

尝试在 "Project Structure | Project"

中将项目语言级别设置为“9”

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

除了上面提到的 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中。解决方案是显式添加 thore 库。

对于 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;