这是java.rmi
模块的模块声明:
module java.rmi {
requires java.base;
requires java.logging;
exports java.rmi.activation;
exports com.sun.rmi.rmid to java.base; // <-- cycle
...
}
那么,java.rmi
和 java.base
之间存在循环依赖关系,对吗? platform modules之间是否允许循环?
最佳答案
模块系统禁止使用 requires
子句静态声明循环。对于平台和应用程序模块来说都是如此,并且您给出的示例并不违反该规则。
不过,Requires 子句只是模块图中可读性边缘的来源之一。其他的是命令行标志、反射、需要传递
,我确信还有更多。添加所有这些可能会导致模块图中出现循环,但这是不禁止的。
在您的具体示例中,仅在java.base读取java.rmi时创建循环,如果它在com.sun.rmi.rmid
中的类上使用反射,则可能会发生这种情况。
关于java - 平台模块之间是否允许循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793339/