I think you need to iterate over the service loader to guarantee that the classes are loaded. From http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html#load(java.lang.Class)

"To achieve laziness the actual work of parsing the available provider-configuration files and instantiating providers must be done by the iterator itself."