【发布时间】:2019-04-17 03:01:00
【问题描述】:
我创建了一个模块com.company.ep,它位于源文件夹com.company.ep 中。 (是的,我已经从构建路径中删除了src 并将其删除!)在源文件夹中,我有几个包如下:
com.company.ep <--- root source folder
com.company.ep.main <--- package 1
com.company.ep.model <--- package 2
com.company.ep.view <--- package 3
// ... more packages
module-info.java
主类位于包com.company.ep.main.Main。在我的module-info.java 中,我已经配置了依赖项:
module com.company.ep {
exports com.company.ep.main;
exports com.company.ep.model;
exports com.company.ep.view;
// ... more exports
requires javafx.controls;
requires javafx.graphics;
}
当我尝试启动我的程序时,eclipse 告诉我:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found, required by com.company.ep
所以,我尝试在命令提示符下运行它:
java -p d:\Applications\openjfx-sdk-11\lib;bin -m com.company.ep/com.company.ep.main.Main
bin 是 eclipse 的输出文件夹,成功了。
所以,我去了Properties → Run/Debug Settings → Main → Show Command Line,它显示:
D:\Applications\openjdk-11.0.1\bin\javaw.exe -Dfile.encoding=UTF-8 -p "D:\Development\Eclipse-Workspace\MyProject\bin" -classpath "D:\Applications\openjfx-sdk-11\lib\javafx.base.jar;D:\Applications\openjfx-sdk-11\lib\javafx.controls.jar;D:\Applications\openjfx-sdk-11\lib\javafx.fxml.jar;D:\Applications\openjfx-sdk-11\lib\javafx.graphics.jar;D:\Applications\openjfx-sdk-11\lib\javafx.media.jar;D:\Applications\openjfx-sdk-11\lib\javafx.swing.jar;D:\Applications\openjfx-sdk-11\lib\javafx.web.jar;D:\Applications\openjfx-sdk-11\lib\javafx-swt.jar" -m com.company.ep/com.company.ep.main.Main
我创建了一个添加了所有 JAR 的用户库,并将该库添加到项目的 Modulepath。
然后我尝试在VM arguments中显式设置模块路径Run/Debug Settings:-p D:\Applications\openjfx-sdk-11\lib,我仍然没有运气。
我的问题是:
- 为什么是
javaw.exe? - 为什么是
classpath?由于我的库被添加为模块路径条目。 - 如何在eclipse中配置模块依赖。
我不确定我是否正确配置了 eclipse,或者当我在另一台安装了 Oracle Java SE 的计算机上工作时,它是否可能是 OpenJDK 的问题。
谢谢!
【问题讨论】:
-
您使用的是最新版本的 Eclipse 吗?以前的版本在正确处理模块路径时存在很多问题。
-
@kleopatra OP说他有一个module-info.java,他需要JavaFX模块。在这种情况下,不需要添加 --add-modules 命令。使用最新版本的 Ecipse,运行时配置中模块路径的处理也应该可以正常工作,而无需显式指定任何 --module-path。
-
@kleopatra 我试过
--add-modules,但还是不行。顺便说一句,我仍然不明白这个指令,因为所有必要的模块都应该位于我的模块路径中。此外,我可以使用-p和-m在命令行上启动我的程序。 -
@mipa 是的,我正在使用 Eclipse 4.9.0,我认为这是最新版本,并且我还安装了来自市场的 Java 11 支持。我正在使用 OpenJDK ver11,因为我需要 OpenJFX 11 SDK。正如您所说,理论上,Eclipse 应该能够自动处理模块路径,因为它已将我的
bin目录添加到模块路径中。 -
@vesontio 在这种情况下,一切都应该没问题,并且无需任何其他命令行选项即可工作。所以肯定还有另一个问题。我发现可疑的是您的文件夹结构。你为什么不遵守通常的文件夹约定?
标签: java eclipse javafx java-module javafx-11