java - java.lang.module.FindException:找不到模块
问题描述
我必须说我对 Java 不太熟悉,我正在为我的大学课程做作业。
我想用 JavaFX 和 SceneBuilder 制作一个桌面应用程序,我在 YouTube 上使用本教程:https ://www.youtube.com/watch?v=DH3dWzmkT5Y
一切正常,直到 17:25 他创建了module-info.java文件
module HotelBookingSystemTest1 {
requires javafx.graphics;
requires javafx.fxml;
requires javafx.controls;
requires java.sql;
requires mysql.connector.java;
opens sample;
}
我在我的项目中做同样的事情,但运行后我得到这个错误:
/home/prem/.jdks/openjdk-15.0.2/bin/java --module-path /home/prem/Downloads/javafx-sdk-16/lib --add-modules javafx.controls,javafx.fxml -Djava.library.path=/home/prem/Downloads/javafx-sdk-16/lib -javaagent:/snap/intellij-idea-community/289/lib/idea_rt.jar=44433:/snap/intellij-idea-community/289/bin -Dfile.encoding=UTF-8 -m HotelBookingSystemTest1/sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module HotelBookingSystemTest1 not found
Process finished with exit code 1
我很确定我将文件放在正确的位置,这是我的项目目录树:
有人可以帮我解决这个错误并解释为什么会这样吗?谢谢!
解决方案
您收到该错误是因为您没有在 VM 选项中包含其路径。您所要做的就是找出您的代码输出到的位置,并将该路径添加到任何现有的路径,例如这个:
--module-path "<your-path>" --add-modules javafx.controls,javafx.fxml
看起来你的项目的输出目录是“out”(很可能在生产下),但你总是可以通过转到 File -> Project Structure -> Project -> Project compiler output 来仔细检查,然后找出你的模块所在的位置从那里(在您的情况下,您将寻找 HotelBookingSystemTest1)。复制其地址并将其添加到上面的代码后,它应该如下所示:
--module-path "<your-path>;<copied-address>" --add-modules javafx.controls,javafx.fxml
这是我的参考路径之一,尽管在这种情况下我的输出目录是“类”:
--module-path "C:\Program Files (x86)\JavaFX\javafx-sdk-16\lib;C:\Users\ethan\Documents\Code\GeneralPlanner\classes\production" --add-modules javafx.controls,javafx.fxml
还要确保运行配置和模块设置中的 SDK 相同。如果它给您一个关于 sql 连接器或任何其他未找到模块的错误,请务必将它们的路径也添加到现有路径(与分号相同)。
推荐阅读
- java - 当我从服务器获取数据时,无法从 android 端设置登录注销会话
- python - 使用 pytest-xdist 跨主节点和工作节点访问共享资源
- haskell - 使用 GHC 插件解析类型
- python - 在绘图选择上过滤散景数据表
- python - 在避免多处理python中的内存泄漏后会删除一个变量并重新创建它吗?
- mongodb - 联系人的 MongoDB Schema 优化
- python-3.x - numpy.genfromtxt() 无法读取标题
- javascript - 在 React JS 中更改子属性的位置
- java - SharedPreferences 未保存在 EditTexts 中
- javascript - 如何访问其他js文件的express模块,express模块已经包含在app.js中