-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
9-repo-jigsaw
Create directory "classes" with exploded module m
modules/m/module-info.class
modules/m/p/D.class
invoke fm.setLocationFromPaths(StandardLocation.MODULE_PATH,classes);
you will get
java.lang.IllegalArgumentException: classes
at com.sun.tools.javac.file.Locations$ModulePathLocationHandler.checkValidModulePathEntry(jdk.compiler@9-internal/Locations.java:933)
at com.sun.tools.javac.file.Locations$ModulePathLocationHandler.setPaths(jdk.compiler@9-internal/Locations.java:912)
at com.sun.tools.javac.file.Locations.setLocation(jdk.compiler@9-internal/Locations.java:1548)
at com.sun.tools.javac.file.JavacFileManager.setLocationFromPaths(jdk.compiler@9-internal/JavacFileManager.java:807)
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
Path modules = base.resolve("modules");
Path classes = Files.createDirectories(base.resolve("classes"));
tb.writeJavaFiles(modules.resolve("m"), "module m { }", "package p; public class D { }");
tb.new JavacTask()
.options("-modulesourcepath",modules.toString())
.outdir(classes)
.files(modules.resolve("m/p/D.java"))
.run();
fm.setLocationFromPaths(StandardLocation.MODULE_PATH,classes);
modules/m/module-info.class
modules/m/p/D.class
invoke fm.setLocationFromPaths(StandardLocation.MODULE_PATH,classes);
you will get
java.lang.IllegalArgumentException: classes
at com.sun.tools.javac.file.Locations$ModulePathLocationHandler.checkValidModulePathEntry(jdk.compiler@9-internal/Locations.java:933)
at com.sun.tools.javac.file.Locations$ModulePathLocationHandler.setPaths(jdk.compiler@9-internal/Locations.java:912)
at com.sun.tools.javac.file.Locations.setLocation(jdk.compiler@9-internal/Locations.java:1548)
at com.sun.tools.javac.file.JavacFileManager.setLocationFromPaths(jdk.compiler@9-internal/JavacFileManager.java:807)
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
Path modules = base.resolve("modules");
Path classes = Files.createDirectories(base.resolve("classes"));
tb.writeJavaFiles(modules.resolve("m"), "module m { }", "package p; public class D { }");
tb.new JavacTask()
.options("-modulesourcepath",modules.toString())
.outdir(classes)
.files(modules.resolve("m/p/D.java"))
.run();
fm.setLocationFromPaths(StandardLocation.MODULE_PATH,classes);
- duplicates
-
JDK-8150051 IllegalArgumentException: path too long for directory fm.setLocationFromPaths(StandardLocation.SYSTEM_MODULES,classes)
-
- Closed
-
- relates to
-
JDK-8150111 Need to change signature of StandardJavaFileManager.setLocationFromPaths
-
- Closed
-