我有一个Java项目(项目A),我在其中加载其他jar。这些jar(Project B)都有一个类实现了一个应用程序接口。为了知道该接口,项目b必须将项目A作为库。
现在,在启动项目A时,它会加载项目B的jar,查找应用程序类,获取构造函数和trys来创建对象,但是这会失败: 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。
答案 0 :(得分:0)
将界面放在另一个jar中,由项目A和B引用。