我有一个 Java 项目(项目 A),我在其中加载了其他 jar。这些 jars(项目 B)都有一个类实现应用程序接口。为了知道该接口,项目 b 必须将项目 A 作为库。
现在,当启动项目 A 时,它会加载项目 B 的 jar,查找应用程序类,获取构造函数并尝试创建一个对象,但是失败了:B 类的构造函数创建了一个实现已知接口的对象项目 B,尽管这与项目 A 中的界面相同,但似乎这两者并不相同。
如何解决这种双重绑定依赖?
编辑:这就是我尝试在项目 A 中创建应用程序的方式:
clazz = Class.forName(className, true, loader);
ctor = (Constructor<? extends Application>) clazz.getConstructor();
Application app = ctor.newInstance();
异常发生在第三行,它说 app 的类型是 SpecificApplication(在加载的 jar 中定义并实现 Application 接口),因此不能转换为 Application。