第二个源文件夹中 类 的 Eclipse 启动配置失败

Eclipse launch config fails for classes in second source folder

我在 Eclipse 4.21.0(见下文)中创建了最简单的模块化项目,其中包含两个源文件夹和一个包。两种 main 方法都只打印“Hello”。

Error: Could not find or load main class p1.Main2
Caused by: java.lang.ClassNotFoundException: p1.Main2

如果我检查生成的两个 运行 配置(Main1Main2),它们(表面上)相同,除了对于 Main class 的名称。如果我进入 Main1 启动配置并将主 class 更改为 Main2,现在它可以工作了。因此 Eclipse 为顶级源文件夹生成了一个有效的启动配置,为第二个源文件夹生成了一个损坏的启动配置。

为什么会这样,如何为其他源文件夹生成有效的启动配置?

详情

事实证明这是一个 已知错误 于 2020 年 11 月 23 日报告的 4.17 版:Cannot launch class if module-info.java is in additional source directory

解决方法

如原始错误报告中所述,尝试修改 损坏的 配置无法解决问题:

If I edit the launch configuration (even if I just change the name) I get the following error instead on launching: Error occurred during initialization of boot layer...

但是,可以为 main 源文件夹(module-info.java 所在的位置)创建有效配置,并修改 那个 配置使用 附加 源文件夹中的主 class,这将 运行 正常。