If your module is in source form, then you have two choices:
1. put the contents of the module directly on the SOURCE_PATH, as a
hierarchy of packages and types, with module-info.java in the root of
that hierarchy. by contrast with using MODULE_SOURCE_PATH, (described
next), there should not be any enclosing directory. In your program,
access the module contents using StandardLocation.SOURCE_PATH, (no need
for getModuleLocation). In this case SOURCE_PATH *is* the module location.
2. put the contents of one or more modules on the MODULE_SOURCE_PATH.
The contents of each module should be in directory named for the module.
Each directory should contain a hierarchy of packages and types, with
module-info.java in the root of that hierarchy. The name of the module
in the module-info.java file must match the name of the enclosing
directory. In your program, get a location for the contents of a
specific module on the module source path using
standardFileManager.getModuleLocation(StandardLocation.MODULE_SOURCE_PATH,
moduleName)
If your module can been compiled, you should normally put the module on
the module path and access it via MODULE_PATH. The module can be
represented as a "exploded directory" of packages and types, or as a
modular jar file (i.e. containing module-info.class) or as an automatic
module (a jar file that does not contain module-info.class). Whatever
the form of the module, you can either place it directly on the module
path, or in a directory on the module path. In your program, get a
location for the contents of a specific module on the module path using
standardFileManager.getModuleLocation(StandardLocation.MODULE_PATH,
moduleName)
Generally, if a path is described as a "module path" of some sort, use
getModuleLocation(path, moduleName) to get the contents of a specific
module. If a path is described as a "class path" or (simple) "source
path" then it can only contain a single module, which may be the unnamed
module, in which case, use the path directly (e.g.
fileManager.list(path, ...) ) to get the contents of the module.
-- Jon
On 07/27/2016 07:42 AM, Konstantin Barzilovich wrote:
Thanks for the answer.
I managed to find system module with SYSTEM_MODULES.
But I still don't understand how to find my own module.
As I understand, I need to have path to compiled module in modulepath.
I tried both MODULE_SOURCE_PATH and MODULE_PATH, but I failed.
Could you please explain where module should be in order to be found.
--
Thanks,
Konstantin.
SOURCE_PATH is normally a package-oriented (JDK-8 style) path. It's
not a module-oriented path, so generally, you won't find modules on it.
You probably want to use MODULE_SOURCE_PATH.
-- Jon
On 07/26/2016 06:59 AM, Konstantin Barzilovich wrote:
Hello,
I try to use method getModuleLocation() like this:
JavaFileManager.Location location =
ToolProvider.getSystemJavaCompiler().getStandardFileManager(null,
null, null).getModuleLocation(StandardLocation.SOURCE_PATH,
"myModule");
But variable 'location' is always null.
I expected UnsupportedOperationException or some result, but not null.
What am I doing wrong?