JavaFX 不存在使用 Java 9 和 Intellij Idea
Posted
技术标签:
【中文标题】JavaFX 不存在使用 Java 9 和 Intellij Idea【英文标题】:JavaFX does not exist using Java 9 and Intellij Idea 【发布时间】:2018-05-02 18:20:51 【问题描述】:我正在使用 Intellij Idea 编译一个使用 Maven 依赖项的项目,而 Intellij 一直告诉我我的项目有 50 个错误,因为 JavaFX 不存在。
Intellij 没有将我的代码中的所有 javafx 依赖项都突出显示为错误,只是一旦我按下运行并编译程序,就会说 JavaFX 中的所有内容都不存在。
我尝试重新下载最新的 JDK (Java 9.0.1) 并没有解决问题。我进入了默认项目结构和项目结构,以确保它使用了正确的 jdk 并且没有解决问题。我使用的所有 jdks 似乎都列出了项目中包含的 javafx 包。
这也只是我与朋友合作的特定项目的问题。我们可能必须将所有代码移到一个新项目中,但我不确定这是否能解决任何问题。
有什么建议吗?
【问题讨论】:
你试过用maven编译吗?我在 javaFX 和通过 intelliJ 自己编译时遇到了很多问题。它现在有效,但我不知道为什么。 您使用的是什么版本的 IntelliJ?您收到的错误信息是什么? 【参考方案1】:尝试在“项目结构|项目”中将项目语言级别设置为“9”
【讨论】:
我有同样的问题,这似乎没有帮助。任何其他想法为什么?【参考方案2】:好的,我明白我的问题是什么了。
除了上面提到的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
【讨论】:
如果我不想将 9 作为目标怎么办?我只想编译该项目,以便它可以在 JDK8 和 JDK9/10 上运行。如果我为目标 9 编译它,它将无法在 1.8 上运行。【参考方案3】:在将 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
中列出且值不正确。
【讨论】:
【参考方案4】:File --> Project Structure-->Module
这里的语言级别对我来说设置为 5。将其提高到 9 以允许类等,并且为我解决了与上述相同的错误。
【讨论】:
你看前面的答案和cmets了吗?您的回答提供了哪些新信息? 确实有帮助,因为我找不到项目结构的位置【参考方案5】:我错过了 gradle.build 中的模块。必须更新
javafx
version = "11"
modules = [ 'javafx.controls', 'javafx.fxml' ]
【讨论】:
【参考方案6】:在 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;
【讨论】:
以上是关于JavaFX 不存在使用 Java 9 和 Intellij Idea的主要内容,如果未能解决你的问题,请参考以下文章