The registry hides the class' dependencies, causing run-time errors instead of compile-time errors when dependencies are missing (similar to using Dependency injection). But each library is compiled, just the discovery of the concrete Class might not be found and make error, it's more a deployment issue than a Service Locator issue. The registry makes code harder to test, since all tests need to interact with the same global service locator class to set the fake dependencies of a class under test.