getServiceLoader method
Konstantin Barzilovich
konstantin.barzilovich at oracle.com
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
StandardJavaFileManager,
is declared in jdk.compiler.
So, what should we expect?
Thanks,
Konstantin.
>
>
> On 23/08/2016 15:45, Konstantin Barzilovich wrote:
>> Hello,
>>
>> Could you please explain, how to use getServiceLoader method of
>> javax.tools.JavaFileManager 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