getServiceLoader method

Konstantin Barzilovich konstantin.barzilovich at
Tue Aug 23 15:58:31 UTC 2016

Thanks for the answer.
I'll file the bug.
But I'm not sure what behavior is expected in this case.
As I understand, this error occurs because fileManager, which is   
is declared in jdk.compiler.
So, what should we expect?


> On 23/08/2016 15:45, Konstantin Barzilovich wrote:
>> Hello,
>> Could you please explain, how to use getServiceLoader method of  
>> interface.
>> Should location parameter point to location of class or location of  
>> module, which provides implementation?
>> Is it possible to use this method from unnamed module?
>> I tried this way:
>> Path path = Paths.get("/Projects/Test/service.jar");
>> fileManager.setLocationFromPaths(StandardLocation.CLASS_PATH,  
>> Arrays.asList(path));
>> ServiceLoader<ServiceExample> loader =  
>> fileManager.getServiceLoader(StandardLocation.CLASS_PATH,  
>> ServiceExample.class);
>> In this example we have service.jar with both service interface  
>> ServiceExample and service implementation ServiceImpl inside.
>> In addition, we have META-INF/services/package.ServiceExample file,  
>> which contains  "package.ServiceImpl".
>> fileManager is StandardJavaFileManager obtained by  
>> getStandardFileManager method of JavaCompiler.
>> But this example fails:
>> java.util.ServiceConfigurationError: package.ServiceExample: use not  
>> declared in module jdk.compiler
> Can you create a bug for the SCE as that should not be thrown.
> -Alan

More information about the jigsaw-dev mailing list