modulepath and classpath mixture
Robert Scholte
rfscholte at apache.org
Tue Mar 8 19:13:05 UTC 2016
On Mon, 07 Mar 2016 13:13:38 +0100, Alan Bateman <Alan.Bateman at oracle.com>
wrote:
> On 06/03/2016 14:01, Robert Scholte wrote:
>> Hi,
>>
>> I've asked for some feedback and there seems to be concerns with split
>> packages when there are two or more modules on the module path that
>> export the same package.
>> Unless I misunderstand the issue, I'd say you have the same problem
>> with -addmods. If you add mod1 and mod2, which both export the same
>> package, you have exactly the same issue, right?
> Yes, although at least if you specify the module names to -addmods then
> you are being explicit as to the additional modules to resolve. The
> issue with -addmods ALL-NAMED (or what the token is) is that it will
> resolve all modules that can be found via the application module path
> and so would need to be used with great care.
>
I can only speak for Maven how it wants to use it. Only the modules used
to compile the src/main/java sources will end up on the modulePath in this
case. So the set of modules has already been validated, kind of.
>>
>> When talking about exports it made me realize there's probably another
>> issue: only the exported packages of the "main"-module are accessible,
>> right? Since src/test/java has no module-info, the -Xpatch is useless.
>> An idea that comes to my mind is something like -mainModule <arg>,
>> where are either a jar or directory containing module-info. All its
>> classes can be accessed by the classes on the classpath, all other
>> modules keep their package access restrictions.
> I don't think I understand the issue here. Using -Xpatch doesn't change
> the module declaration or export. It can be used to override or augment
> the module content, it just can't override the module declaration. It
> can be used in conjunction with -XaddReads and -XaddExports to read
> additional modules or export additional packages. For example, if a
> patch adds types to a new package then you could export that package
> with -XaddExports. If the patch injects tests into an existing package
> then those tests might have new dependences and requires compiling or
> running with -XaddReads:$MODULE=junit for example.
This is how I thought that -Xpatch would work in short: the module-info in
src/main/java and src/test/java have both the same modulename. The
module-info in src/test/java specifies the extra required modules (like
junit). With -Xpatch the test-classes have access to the non-exported
main-classes too.
>
> -Alan
thanks,
Robert
More information about the jigsaw-dev
mailing list