我该怎么做才能使API中的类对Core中的ClassLoader代码可见?
核心:
module Core {
//requires nothing relevant... org.json, commons.math3
exports Core.foo;
}
API:
module API {
requires Core;
exports API.bar;
}
API:
module APIs {
requires transitive Core;
requires transitive API;
exports APIs.baz;
}
API调用一个Core函数,该函数试图通过Class.forName("API.bar.someClass")
从名称中获取类的名称,并立即引发ClassNotFound
异常。请注意,API.bar确实已导出。
我已经尝试了很多事情,例如:
open module
。dependencies { testRuntimeOnly project(':API') }
添加到Core的build.gradle文件中。runtime project(':API')
引起了循环依赖性。任何人都可以解释造成这种混乱的原因吗?显然,这是类路径/模块路径的问题,但我的印象是,传递和导出应处理所有这些问题,并且所有这些jar文件都是运行在具有共享模块路径的同一个java.exe会话中...所以没问题吧?显然不是。 此混乱的解决方案是什么?