Projo.forName currently handles ClassNotFoundExceptions by returning null.
In some scenarios (which ones?) class loading fails with a NoClassDefFoundError instead, which is not caught and will be propagated in client code. This should also be handled and result in null being returned.
Actually, that's what the documentation says (and what it should do), but the current code converts ClassNotFoundExceptions to NoClassDefFoundErrors, which it shouldn't do.