Intellij Idea “模块找不到”即使我没有要求这个模块

h43kikqp  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(154)

几个月前,我为学校做了一个javafx项目,它需要一些我在google上找到的外部库。
现在我在这里尝试做一个个人项目,所以我在intelij Idea上创建了一个新的JavaFX项目,但它一直显示我“模块未找到”,其中一些模块我在以前的项目中使用。但我不知道为什么在我的代码中没有“require”。
4 module errors, but no require anywhere in any files
我试图重置Idea中的所有设置,但没有成功,我甚至在javafx中创建了一个新项目,但它仍然做了完全相同的事情
我不需要这些模块,我如何删 debugging 误?

wydwbb8l

wydwbb8l1#

解决方案

这看起来像一个由Idea new JavaFX项目向导创建的简单项目。
重新运行向导以使用不同的名称创建一个新项目,* 确保您没有选中任何第三方JavaFX库的复选框 *(因为您实际上没有使用任何这些库)。
使用最新版本的Idea和follow the instructions exactly,如果你这样做,它会工作。

为什么失败

在使用新建JavaFX项目向导并包含TilesFX依赖项时,生成的JavaFX项目中出现错误(使用idea版本测试:构建编号IU-232.8660.185,构建于2023年7月25日)。

  1. Idea项目模板选择的TilesFX版本似乎具有格式错误的模块信息。
  2. TilesFX需要javafx-swing依赖项,Idea项目模板中不包含该依赖项。
    可以向Idea提交错误报告,请求修复。

解决方案:如果你真的需要使用TilesFX

模板使用TilesFX版本17.1.17。这个版本似乎有一些问题,其模块定义和生成模块错误的问题中所示。
摘自在生成的项目上执行mvn clean compile目标:

[INFO] --- compiler:3.11.0:compile (default-compile) @ allfx ---
[INFO] Changes detected - recompiling the module! :source
[INFO] Compiling 3 source files with javac [debug target 20 module-path] to target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] module not found: eu.hansolo.fx.countries
[ERROR] module not found: eu.hansolo.fx.heatmap
[ERROR] module not found: eu.hansolo.toolboxfx
[ERROR] module not found: eu.hansolo.toolbox
[INFO] 4 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

这可以通过使用最新版本的TilesFX(在创建此答案时为17.1.31)来修复。

<dependency>
    <groupId>eu.hansolo</groupId>
    <artifactId>tilesfx</artifactId>
    <version>17.1.31</version>
    <exclusions>
        <exclusion>
            <groupId>org.openjfx</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

但是你会得到另一个错误(也是由于Idea生成的错误模板)。当您尝试运行应用程序时(当应用程序类在IDE中处于焦点位置时,按IDE中的绿色运行箭头),会发生这种情况。

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.swing not found, required by eu.hansolo.fx.countries

这是因为Idea在生成的项目中排除了一个必需的依赖项。要解决这个问题,请将以下部分添加到pom.xml:

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-swing</artifactId>
    <version>20</version>
</dependency>

调整所使用的版本,使其与pom.xml中其他javafx组件所使用的版本完全匹配。
确保将maven项目重新导入Idea。
在进行这些修改后,您的应用程序应该可以正常工作,并能够使用TilesFX。

相关问题