9

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

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

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

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

有什么建议么?

4

6 回答 6

13

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

于 2017-11-20T08:48:53.273 回答
11

好的,我明白我的问题是什么了。

除了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

于 2017-12-20T21:49:29.627 回答
6

在将 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

于 2018-03-12T14:05:19.590 回答
1
File --> Project Structure-->Module

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

于 2018-04-02T08:57:20.587 回答
1

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

javafx {
  version = "11"
  modules = [ 'javafx.controls', 'javafx.fxml' ]
}
于 2019-05-04T19:35:20.947 回答
0

在 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;
于 2020-05-28T21:51:12.863 回答