getServiceLoader method
Alan Bateman
Alan.Bateman at oracle.com
Tue Aug 23 15:00:20 UTC 2016
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