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