第二个源文件夹中 类 的 Eclipse 启动配置失败
Eclipse launch config fails for classes in second source folder
我在 Eclipse 4.21.0(见下文)中创建了最简单的模块化项目,其中包含两个源文件夹和一个包。两种 main
方法都只打印“Hello”。
- 如果我 right-click 在
Main1
和 运行 作为 Java 应用程序,一切都很好。
- 如果我 right-click 在
Main2
上做同样的事情,我得到:
Error: Could not find or load main class p1.Main2
Caused by: java.lang.ClassNotFoundException: p1.Main2
如果我检查生成的两个 运行 配置(Main1
和 Main2
),它们(表面上)相同,除了对于 Main class 的名称。如果我进入 Main1
启动配置并将主 class 更改为 Main2
,现在它可以工作了。因此 Eclipse 为顶级源文件夹生成了一个有效的启动配置,为第二个源文件夹生成了一个损坏的启动配置。
为什么会这样,如何为其他源文件夹生成有效的启动配置?
详情
- 我知道这不是 non-modular 项目的问题,但我有兴趣解决模块化项目的问题。
- 即使我在启动前 delete/refresh 启动配置时也会发生这种情况,并且与我 运行
Main1
和 Main2
. 的顺序无关
- 无论我只有一个输出文件夹还是每个源文件夹一个,都会发生这种情况。
事实证明这是一个 已知错误 于 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,这将 运行 正常。
我在 Eclipse 4.21.0(见下文)中创建了最简单的模块化项目,其中包含两个源文件夹和一个包。两种 main
方法都只打印“Hello”。
- 如果我 right-click 在
Main1
和 运行 作为 Java 应用程序,一切都很好。 - 如果我 right-click 在
Main2
上做同样的事情,我得到:
Error: Could not find or load main class p1.Main2
Caused by: java.lang.ClassNotFoundException: p1.Main2
如果我检查生成的两个 运行 配置(Main1
和 Main2
),它们(表面上)相同,除了对于 Main class 的名称。如果我进入 Main1
启动配置并将主 class 更改为 Main2
,现在它可以工作了。因此 Eclipse 为顶级源文件夹生成了一个有效的启动配置,为第二个源文件夹生成了一个损坏的启动配置。
为什么会这样,如何为其他源文件夹生成有效的启动配置?
详情
- 我知道这不是 non-modular 项目的问题,但我有兴趣解决模块化项目的问题。
- 即使我在启动前 delete/refresh 启动配置时也会发生这种情况,并且与我 运行
Main1
和Main2
. 的顺序无关
- 无论我只有一个输出文件夹还是每个源文件夹一个,都会发生这种情况。
事实证明这是一个 已知错误 于 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,这将 运行 正常。