这可能需要一点时间来理解,但我会尝试使其尽可能简单。我在Netbeans中有以下项目(为了保护无辜者而更改了名称):
核心
组件1
组件2
更薄
Component1,Component2和Thinger都需要Core,因此在其库中包含指向该项目的链接。
更薄还需要Component1。
Component1还需要Component2。
每个项目都单独编译(仅带有引用)。但是,一旦我在Component1内部创建Component2的实例,就会在运行时得到以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: somepackage.stuff/Component2
请记住,所有项目都在继续构建,这让我很沮丧。我没有使用反射,只有当我在Component1中包含Component2 someVar = new Component2()行时,才会发生这种情况。任何想法可能导致这种情况发生吗?
更新#1:在构建Thinger时,似乎并没有拉进Component2的jar。有什么办法可以迫使Netbeans做到这一点?
最佳答案
只需在Thinger中向Component2添加一个依赖项。很多时候,组件将具有运行时不一定需要的依赖关系(例如,可以是可选功能),而仅仅是构建所需的依赖关系。因此,只需将额外的依赖项添加到Thinger中就可以了。