On 05/12/2015 17:16, Jochen Theodorou wrote:
Hi all,

in the sadly few hours of my spare time these days I am trying to understand jigsaw better and I came across the condition that the module graph should be acyclic... which made me wonder...


So Let us assume there is a module groovy.runtime and a module app0, which is written in Groovy. groovy.runtime exports a equally named package for general use. Since app0 is written in Groovy there is the high possibility that I will have to invoke arbitrary methods from app0 from inside groovy.runtime. Meaning app0 needs to give a read edge to groovy.runtime for app0. So app0 depends on groovy.runtime and groovy.runtime depends on app0... is that a cricular dependency that is forbidden... or was it only for compile time?

This is just a cycle in the readability graph at run-time, not a problem, and "normal" when the framework is accessing something in its consumer. There are also cycles when there are automatic modules in the picture because automatic modules read all other modules.

The strict requirement is that there isn't a cycle in the dependency graph. This should be caught at compile-time, and at run-time when creating a configuration (think startup for now).

-Alan

Reply via email to