I got the NoClassDefFoundError after some reorganizing of my Eclipse 2020-12 workspace in which I have 8 cooperating projects. The projects build upon (i.e. depend on) one another, and I had entered the dependencies using Package Explorer -> right click on project name -> Build Path -> Configure Build Path ... -> "Projects" Tab -> "Add..." Button.
Background: Because I ran into so many problems with the Java Module System, I decided to avoid it altogether and continue to use Java 1.8 even though I have (don't ask me why) JavaSE-13 (also shown as "JRE 13") as my runtime. Now back to my observations and finally the solution:
Observation 1: Some of my projects were ticked "Enable project specific settings" and others were not.
Observation 2: In the "Java Build Path" dialog -> Tab "Projects" I noticed that the information about the "Required projects on the build path" was not consistent. The same lower-level project was shown as "Is modular" on some projects that used it, and as "Is not modular" on other projects. (To see this "modular or not" info about a required project, expand its line by clicking on the > in front of the name).
Solution (part 1): For all my projects in the workspace I made sure they did NOT have a tick in "Enable project specific setting" in the dialog "Java Compiler" of the project properties. So that all of them should now share the Workspace Settings for "Java Compiler".
Solution (part 2): In the list of the "required projects" of each project I removed the entries for the projects that were listed as "Is modular" and immediately added them again. After this operation, all required projects of all my 8 projects were listed as "Is not modular".
Effect: Now the software runs fine again.
Hypothesis 1: Maybe the class loaders use different search mechanisms when they look for class files in projects, depending on whether the USING project declares the projects it uses as modular or not.
Hypothesis 2: Maybe Eclipse COPIES the "is modular" information of a lower-level project when it adds it to the "required projects" of another project. With the effect that if the "is modular" information changes, the depending projects are out of sync. If this is true, Eclipse should just REFER to the "is modular" information receive an event in case it changes.
My opinion: I regard this is an error. Why? A project which requires another one should not depend on whether the other project is "modular" or not.