java - 第二个源文件夹中的类的 Eclipse 启动配置失败
问题描述
我在 Eclipse 4.21.0(见下文)中创建了最简单的模块化项目,其中包含两个源文件夹和一个包。这两种main
方法都只打印“Hello”。
- 如果我右键单击
Main1
并Run as Java Application,一切都很好。 - 如果我右键单击
Main2
并执行相同操作,我会得到:
Error: Could not find or load main class p1.Main2
Caused by: java.lang.ClassNotFoundException: p1.Main2
如果我检查生成的两个运行配置(Main1
和Main2
),它们(表面上)是相同的,除了 Main 类的名称。如果我进入Main1
启动配置并将主类更改为Main2
,现在它可以工作了。因此 Eclipse 为顶部源文件夹生成了一个有效的启动配置,并为第二个源文件夹生成了一个损坏的启动配置。
为什么会这样,如何为其他源文件夹生成有效的启动配置?
细节
- 我知道这对于非模块化项目来说不是问题,但我有兴趣解决模块化项目的案例。
- 即使我在启动之前删除/刷新启动配置,也会发生这种情况,并且与我运行的顺序
Main1
和Main2
. - 无论我有一个输出文件夹还是每个源文件夹一个,都会发生这种情况。
解决方案
事实证明,这是2020 年 11 月 23 日针对 4.17 版报告的一个已知错误: Cannot launch class if module-info.java is in additional source directory。
解决方法
如原始错误报告中所述,尝试修改损坏的配置并不能解决问题:
如果我编辑启动配置(即使我只是更改名称),我会在启动时收到以下错误:
Error occurred during initialization of boot layer...
但是,可以为主源文件夹(module-info.java
位于哪里)创建一个有效的配置,并修改该配置以使用附加源文件夹中的主类,这将运行良好。
推荐阅读
- javascript - 在 VueJS 应用程序中构建输入表单类型文件
- c# - 在asp.net mvc中注册成功(重定向到登录)后用户名自动填写登录页面
- php - 类型:ArgumentCountError 消息:函数的参数太少
- javascript - Spotify 网络 API
- android - 接受用户在 UI 中的输入并代表用户在网站上提交数据?
- backbone.js - 获取数据未在模板中呈现
- excel - 工作表更改 VBA
- node.js - 如何使用 Node.js 通过 AWS SES 发送图像和文件附件?
- python - Pymodbus-read-input-registers CRC 无效,丢弃标头
- python - Python:Pandas groupby 处理大数据的时间太长