有人可以向我解释 BND 导出捆绑包没有的 api 包背后的基本原理吗?这对我来说似乎是错误的,它总是(AFAICT)导致ClassNotFoundException
特别是bundle
A 包含com.foo.api.MyInterface
bundle B 包含com.foo.impl.InterfaceImpl
哪些实现MyInterface
因此,如果我告诉 bnd 导出包com.foo
A 中的包,他将正确导出com.foo.api
,但如果我告诉com.foo
包 B 中的导出包,它将错误导出com.foo.api
,因此MyInterface的消费者被连接到包 B,然后在运行时获得 ClassNotFoundException
为什么 BND 不保证当一个包导出一个包时它实际上包含它?
我知道如果我导出com.foo.api
而com.foo.impl
不是com.foo
在我的简单示例中解决问题,但在我们的实际系统中,这并不是真正的可能性。此外,实际的问题是为什么 BND 会这样做,而不是如何解决问题。我已经知道解决问题的方法