The Launcher launches a small Java class which needs the uimaj-core classes to run. The Launcher includes the project's classpath, so if uimaj-core is on that classpath, all is well. But there's no requirement that uimaj-core be on the project's classpath (for example, imagine a project for an aggregate, that just contains xml descriptors, etc.). In that case, the failure happens.
The launcher is attempting to handle this by suffixing the uimaj-ep-runtime jar to the launched classpath. That worked in 2.4.0 and earlier, because that plugin jar had all the uimaj-core classes. However, as of 2.4.1, we changed the packaging of this, and the uimaj-ep-runtime is now set up to have embedded jar files, with an OSGi Bundle-Classpath which identifies these Jars. That doesn't help this Jar's usage as just a plain (non-OSGi) Jar.
Reported by Peter Klügl who also discovered the fix in project Ruta. The fix here is slightly faster - only the uimaj-core jar is included (that's all the launcher class needs).