Cyclic dependencies during multi-module compilation

Nicolai Parlog nipa at codefx.org
Tue May 8 10:16:58 UTC 2018


Here it is:

	https://github.com/CodeFX-org/demo-jpms-monitor/blob/break-cyclic-dependency-compile-time/monitor.statistics/src/main/java/module-info.java#L3

Maybe you looked at the master branch?



On 08.05.2018 12:11, Zheka Kozlov wrote:
> Are you sure that you have a cycle between modules? You state that
> "monitor.statistics depends on monitor.persistence", however I do not see
> this in module-info.java:
> 
> module monitor.statistics {
> requires monitor.observer;
> exports monitor.statistics;
> }
> 
> 
> 2018-05-08 16:34 GMT+07:00 Nicolai Parlog <nipa at codefx.org>:
> 
>>  Hi Zheka,
>>
>> this branch demonstrates what I describe:
>>
>>         https://github.com/CodeFX-org/demo-jpms-monitor/tree/break-
>> cyclic-dependency-compile-time
>>
>> Run `multi-compile.sh && run.sh` and you will see the compiler happily
>> creating the modules whereas the runtime complains about the cyclic
>> dependency. Maybe I'm doing something weird without noticing? (I tried
>> it on 9.0.1, 9.0.4, 10, and 11-ea+7.)
>>
>>  so long ... Nicolai
>>
>>
>>
>> On 08.05.2018 11:05, Zheka Kozlov wrote:
>>> Hi Nicolai.
>>>
>>> I cannot reproduce what you said. I'm using JDK 10.0.1. I created two
>>> modules moduleA and moduleB which require each other. When I tried to
>>> compile, javac failed with an error: cyclic dependence involving module.
>>>
>>> Do you observer a different behavior?
>>>
>>> 2018-05-08 15:01 GMT+07:00 Nicolai Parlog <nipa at codefx.org>:
>>>
>>>>  Hi!
>>>>
>>>> In early access builds, multi-module compilation would fail if there was
>>>> a dependency cycle between the involved modules. I just realized that
>>>> that is no longer the case in 9.0.1 and later (up to Java 11).
>>>>
>>>> I'm interested to learn the background for that decision? I considered
>>>> that check A Good Thing - why was it removed?
>>>>
>>>>  so long ... Nicolai
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> PGP Key:
>>>>     http://keys.gnupg.net/pks/lookup?op=vindex&search=
>> 0xCA3BAD2E9CCCD509
>>>>
>>>> Web:
>>>>     http://codefx.org
>>>>         a blog about software development
>>>>     https://www.sitepoint.com/java
>>>>         high-quality Java/JVM content
>>>>     http://do-foss.de
>>>>         Free and Open Source Software for the City of Dortmund
>>>>
>>>> Twitter:
>>>>     https://twitter.com/nipafx
>>>>
>>>
>>
>> --
>>
>> PGP Key:
>>     http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509
>>
>> Web:
>>     http://codefx.org
>>         a blog about software development
>>     https://www.sitepoint.com/java
>>         high-quality Java/JVM content
>>     http://do-foss.de
>>         Free and Open Source Software for the City of Dortmund
>>
>> Twitter:
>>     https://twitter.com/nipafx
>>
> 

-- 

PGP Key:
    http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509

Web:
    http://codefx.org
        a blog about software development
    https://www.sitepoint.com/java
        high-quality Java/JVM content
    http://do-foss.de
        Free and Open Source Software for the City of Dortmund

Twitter:
    https://twitter.com/nipafx


More information about the jigsaw-dev mailing list