Java - 当应用程序是 运行 时,IntelliJ 找不到模块-info.java 中声明的模块库
Java - IntelliJ not finding module-libraries stated in module-info.java when the application is ran
我的设置:
我遵循了 JavaFX 和 IntelliJ -> Modular 来自 IDE path 的步骤。
我添加了 ikonli-core-12.2.0.jar, ikonli-javafx-12.2.0.jar 和 ikonli-carbonicons-pack-12.2.0.jar 按此顺序通过存储库到 Scene Builder。在这里,它们工作正常。
然后我按照此处描述的相同顺序将相同的 .jars
添加到 IntelliJ:Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project.
我的 module-info.java 文件包含以下代码:
module project {
requires javafx.controls;
requires javafx.fxml;
requires org.kordamp.ikonli.core;
requires org.kordamp.ikonli.javafx;
requires org.kordamp.ikonli.carbonicons;
opens com.project to javafx.fxml;
exports com.project;
}
我的图书馆图片:
问题:
当我将图标添加到 .fxml
文件并单击 运行 时,出现以下错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.kordamp.ikonli.javafx not found, required by project
模块名称不同。有时它说是 javafx
,其他人说是 core
或 carbonicons
.
我不确定为什么会这样。当我输入 module-info.java 文件时,我得到了自动填充提示,但是当我尝试 import org.kordamp.ikonli.core;
在我的 Main.java
, 它不会 检测到它们。
我不确定为什么会这样。当我在 module-info.java 文件中输入或在我的 Main.java
中尝试 import org.kordamp.ikonli.javafx.FontIcon;
时,我得到了自动填充提示,所以这意味着它是检测到它们。
如果我从 module-info.java 和 运行 中删除“ikonli requires”,我会得到这个错误(这是可以理解的):
java.lang.ClassNotFoundException: org.kordamp.ikonli.javafx.FontIcon
我尝试过的解决方案:
- 通过文件添加
.jars
-> 项目设置 -> 库.
这似乎自动将它们添加到 Modules -> Dependencies,但即便如此,问题仍然存在。
- 将它们添加到 VM 选项(运行 -> 编辑配置 -> Modify Options -> VM Options) 以各种方式,在上面链接的步骤中提到的
--module-path ${PATH_TO_FX}:out/production
之后 (out
可以安全地更改为 mods
但我选择不这样做)。
第一个:
--module-path ${PATH_TO_IKONLI_CORE}
、--module-path ${PATH_TO_IKONLI_JAVAFX}
和 --module-path ${PATH_TO_IKONLI_CARBONICONS}
这样做可以避免检测到我实际的 project
模块。 IE。我收到此错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module project not found
第二个:
--add-modules ${PATH_TO_IKONLI_CORE},${PATH_TO_IKONLI_JAVAFX},${PATH_TO_IKONLI_CARBONICONS}
这个会产生一个微笑错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module /directory/path/to/file/ikonli-core-12.2.0.jar not found
第三个:
--add-modules org.kordamp.ikonli.core,org.kordamp.ikonli.javafx,org.kordamp.ikonli.carbonicons
出现类似的错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.kordamp.ikonli.core not found
我尝试了文件 -> 从磁盘重新加载所有和使缓存无效/重新启动 选项,但它们似乎没有效果。
我在我的 src
项目文件夹中创建了一个 lib
文件夹,将 .jars
放在那里并将它们添加为依赖项。现在它们没有出现在 External Libraries
部分(因为它们显然不是外部的)但问题仍然存在(我将再次将它们重新添加为外部)。
附加信息:
我添加 controlsfx.jar
的方式与 Ikonli .jars
相同。也出现同样的错误。
他们都有 module-info.class 文件在正确的目录中,如 official javadoc 中所述,但 ModuleFinder
仍然抛出异常。
我还检查了我的 project.iml
文件,它们都有 module-libraries
和正确的目录。
我已经多次访问 official Ikonli installation steps 并且一切正常。
不过,其中提到我需要在模块描述符中包含 requires javafx.base; requires javafx.graphics;
。不正确,至少在我的情况下,因为当我将 --show-module-resolution
添加到 VM 选项 时,它表明它们加载正常,但即使我确实添加了它们,错误仍然出现。
结束
很抱歉 post,我没有想法,我不知道还能尝试什么。
其中一条评论 提到他们将 .jar
放在 mods/production
文件夹中。我做了同样的事情......并且它有效。 (╯°□°)╯︵┻━┻
我猜“来自 IDE 的模块化”与 IDE 不一致。
看起来 正确的 模块化方法是使用 Maven/Gradle。我将重建并使用 Gradle.
我的设置:
我遵循了 JavaFX 和 IntelliJ -> Modular 来自 IDE path 的步骤。
我添加了 ikonli-core-12.2.0.jar, ikonli-javafx-12.2.0.jar 和 ikonli-carbonicons-pack-12.2.0.jar 按此顺序通过存储库到 Scene Builder。在这里,它们工作正常。
然后我按照此处描述的相同顺序将相同的 .jars
添加到 IntelliJ:Correct way to add external jars (lib/*.jar) to an IntelliJ IDEA project.
我的 module-info.java 文件包含以下代码:
module project {
requires javafx.controls;
requires javafx.fxml;
requires org.kordamp.ikonli.core;
requires org.kordamp.ikonli.javafx;
requires org.kordamp.ikonli.carbonicons;
opens com.project to javafx.fxml;
exports com.project;
}
我的图书馆图片:
问题:
当我将图标添加到 .fxml
文件并单击 运行 时,出现以下错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.kordamp.ikonli.javafx not found, required by project
模块名称不同。有时它说是 javafx
,其他人说是 core
或 carbonicons
.
我不确定为什么会这样。当我输入 module-info.java 文件时,我得到了自动填充提示,但是当我尝试 import org.kordamp.ikonli.core;
在我的 Main.java
, 它不会 检测到它们。
我不确定为什么会这样。当我在 module-info.java 文件中输入或在我的 Main.java
中尝试 import org.kordamp.ikonli.javafx.FontIcon;
时,我得到了自动填充提示,所以这意味着它是检测到它们。
如果我从 module-info.java 和 运行 中删除“ikonli requires”,我会得到这个错误(这是可以理解的):
java.lang.ClassNotFoundException: org.kordamp.ikonli.javafx.FontIcon
我尝试过的解决方案:
- 通过文件添加
.jars
-> 项目设置 -> 库.
这似乎自动将它们添加到 Modules -> Dependencies,但即便如此,问题仍然存在。
- 将它们添加到 VM 选项(运行 -> 编辑配置 -> Modify Options -> VM Options) 以各种方式,在上面链接的步骤中提到的
--module-path ${PATH_TO_FX}:out/production
之后 (out
可以安全地更改为mods
但我选择不这样做)。
第一个:
--module-path ${PATH_TO_IKONLI_CORE}
、--module-path ${PATH_TO_IKONLI_JAVAFX}
和 --module-path ${PATH_TO_IKONLI_CARBONICONS}
这样做可以避免检测到我实际的 project
模块。 IE。我收到此错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module project not found
第二个:
--add-modules ${PATH_TO_IKONLI_CORE},${PATH_TO_IKONLI_JAVAFX},${PATH_TO_IKONLI_CARBONICONS}
这个会产生一个微笑错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module /directory/path/to/file/ikonli-core-12.2.0.jar not found
第三个:
--add-modules org.kordamp.ikonli.core,org.kordamp.ikonli.javafx,org.kordamp.ikonli.carbonicons
出现类似的错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.kordamp.ikonli.core not found
我尝试了文件 -> 从磁盘重新加载所有和使缓存无效/重新启动 选项,但它们似乎没有效果。
我在我的
src
项目文件夹中创建了一个lib
文件夹,将.jars
放在那里并将它们添加为依赖项。现在它们没有出现在External Libraries
部分(因为它们显然不是外部的)但问题仍然存在(我将再次将它们重新添加为外部)。
附加信息:
我添加 controlsfx.jar
的方式与 Ikonli .jars
相同。也出现同样的错误。
他们都有 module-info.class 文件在正确的目录中,如 official javadoc 中所述,但 ModuleFinder
仍然抛出异常。
我还检查了我的 project.iml
文件,它们都有 module-libraries
和正确的目录。
我已经多次访问 official Ikonli installation steps 并且一切正常。
不过,其中提到我需要在模块描述符中包含 requires javafx.base; requires javafx.graphics;
。不正确,至少在我的情况下,因为当我将 --show-module-resolution
添加到 VM 选项 时,它表明它们加载正常,但即使我确实添加了它们,错误仍然出现。
结束
很抱歉 post,我没有想法,我不知道还能尝试什么。
其中一条评论 .jar
放在 mods/production
文件夹中。我做了同样的事情......并且它有效。 (╯°□°)╯︵┻━┻
我猜“来自 IDE 的模块化”与 IDE 不一致。
看起来 正确的 模块化方法是使用 Maven/Gradle。我将重建并使用 Gradle.