【问题标题】:JavaFX and IntelliJ no errors althought the documentation says I should have someJavaFX 和 IntelliJ 没有错误,尽管文档说我应该有一些
【发布时间】:2022-01-30 23:08:09
【问题描述】:

我目前正在关注本教程:https://openjfx.io/openjfx-docs/(JavaFX 和 IntelliJ IDEA)。我使用 Intellij 2021.3.2。

我创建了一个项目(1. 创建一个 JavaFX 项目),效果很好,不需要 2.设置 JDK 16 因为它已经设置为 17(我想这很好)。

但是从这里开始奇怪的事情(我对编程很陌生,所以如果听起来很傻,我很抱歉)。 “您还可以将语言级别设置为 11 或更高。”我没有这个选项。因为它是“可以”,我觉得这没什么大不了的,但如果有人能解释这一切是怎么回事?只是出于好奇,因为我在教程的最开始,我只理解了一半。

然后3。创建一个库,我没有他们有的,我的东西是红色的:

所以当他们说“将 JavaFX 17 SDK 作为库添加到项目中”时,我不知道该怎么做。我也不知道如何修复红色的东西。

最后,他们说“警告:如果您现在运行该项目,它将编译但您会收到此错误:...”但如果我单击此按钮

一切正常!你知道我不是在抱怨,但我想更多地了解正在发生的事情。

然后他们建议我应该4。添加 VM 选项 以解决我没有的问题。所以我想也许我的计算机在我不知道的情况下正确设置了 VM 选项,但目前没有 VM 选项(并且它有效)。我仍然应该添加它们吗?

谢谢你的帮助,我很迷茫,感觉我什么都不懂。

【问题讨论】:

  • 您期待什么错误,他们建议使用哪些 VM 选项来修复它? “红色的东西”并不重要,它只是意味着您无法查看 javafx 源代码或 javadoc(能够读取 Javadoc 很重要,但对于运行而言却不是你的程序)
  • 嗨,谢谢你的回答,我期待这个错误 (i.imgur.com/Z1GDAiX.png) 因为教程是这样说的。
  • 如果您单击屏幕右侧的 Maven 选项卡,将出现一个带有下拉菜单的下载符号。选择“下载源和文档”。
  • 至于模块路径,我认为 Intellij 可能已经改进了他们的模板。
  • 我的意思是 StackOverflow 通常不是在完整教程中解释多个步骤的地方,通常它更专注,有代码,像这样的问题通常因为需要更多关注而被关闭。这正是它经常工作的方式。一个关键是在问题和 cmets 中看到多个问号(也许它们可能是单独的问题)。我的评论仅供参考,并为您可能遇到的这个问题和未来的问题设定期望。

标签: java intellij-idea javafx


【解决方案1】:

openjfx 教程中有关使用 Idea 开始使用 JavaFX 的当前文档不正确,至少对于最近的 Idea 版本 (2021.3 +)。

本教程的编写就像创建了一个新的 Java 项目,而不是一个新的 JavaFX 项目。创建新的 JavaFX 项目后,本教程中的其余大部分步骤要么是多余的,要么是错误的。

第 1 步“创建 JavaFX 项目”不仅仅是“创建 Java 项目”,这就是为什么其他所有内容都与本教程不同的原因。

使用 Idea 开始使用 JavaFX 的更好的教程是官方的 Idea 文档:

新建 Java 项目和新建 JavaFX 项目的区别

新的 JavaFX 项目:

  1. 为 Maven (pom.xml) 或 Gradle (build.gradle) 提供构建脚本。

  2. 为 JavaFX 基础、图形、控件和 fxml 添加适当的依赖项。

  3. 提供可以立即运行的示例应用程序和控制器代码。

  4. 示例项目是模块化的,并提供了一个module-info.java

  5. 由于程序是模块化的,依赖是通过maven下载并被IDE识别的,所以不需要手动配置模块路径和添加模块的VM运行时选项。

  6. Idea 将识别 Maven 或 Gradle 项目并自动将初始传递依赖库与 Idea 项目同步。

  7. Idea Maven 工具窗口中有一些选项可让您同步对依赖库或库中的 javadoc 和源代码的进一步更改。

  8. 选择一个 JDK 并将其附加到项目中,如果还没有选择的 JDK 版本,则会自动下载。

  9. 为项目设置适当的语言级别。

当您只使用 create new Java Project 选项时,它不会执行任何这些操作,因此您需要手动执行操作,这就是本教程其余部分的内容:

  1. 手动下载JDK并在SDK中配置。

  2. 手动下载 JavaFX SDK 并将其中的库添加到您的项目中。

  3. 手动配置 VM 模块化参数。

  4. 手动维护任何其他依赖项。

  5. 手动关联 javadoc 和源代码。

  6. 手动编写基本应用程序的代码。

  7. 手动设置项目语言级别。

手动完成所有这些工作需要更多工作并且更容易出错。对于许多刚开始使用 JavaFX 的人来说,手动工作通常会导致更糟糕的结果和更难以维护的项目,因此我不建议这样做。

版本

就要使用的版本而言,我建议使用 JDK 和 JavaFX 的最新稳定(非测试版)版本,无论您可能使用的任何教程中可能引用哪些版本。

您可以在新建JavaFX项目向导生成的Maven文件中设置JavaFX版本,然后在Maven Tool窗口中按下按钮,使Maven项目与Idea项目同步。

语言级别设置

这些在以后很重要,但在刚开始时就无关紧要了。

语言级别设置:

  1. 告诉编译器要将应用程序编译成什么版本的java字节码。

  2. 告诉 IDE 执行哪些语言语法规则并提供帮助。

如果您仅使用 Java 17 功能,则该应用将无法在 Java 11 VM 上运行。

您可以在 Idea 中手动定义设置:

但最好在compiler section of the maven project中设置,并与Idea同步项目,IDE中也会配置设置。

IMO,将其设置为最新的稳定版本,并要求您的应用程序至少使用该 Java 版本运行(您可以通过使用 jlink 或 jpackage 将您选择的 JRE 版本与打包的应用程序捆绑在一起来强制执行)。

【讨论】:

  • 嗨,在我看来,他们确实希望我制作一个 JavaFX 项目,而不是像你提到的那样的 Java 项目:i.imgur.com/Jhzo23Y.png ?还是我弄错了?
  • 哦,好吧,当他们想让我创建一个“Java 项目”时,他们说创建一个新的“JavaFX 项目”(你提到这不是一个好主意)????好吧,我很高兴我在这里发帖,因为我假设他们不会错,只是认为我真的迷路了。我学到了很多东西。谢谢!
  • 更新了答案以说明 openjfx 文档当前是错误的,这造成了您的困惑。
猜你喜欢
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多