8.3. import-Package 标头不完整
如果已经安装了所有必需的功能和捆绑包,您仍然会收到 ClassNotFound
错误,这意味着捆绑包 MANIFEST.MF
文件中的 Import-Package
标头不完整。在生成您的捆绑包的 Import-Package
标头时,maven-bundle-plugin
(请参阅 第 5.2 节 “修改现有的 Maven 项目”)是一个很好的帮助,但您应该注意以下几点:
-
确保将通配符
*
包括在 Maven bundle 插件配置的Import-Package
元素中。通配符指示插件扫描您的 Java 源代码,并自动生成软件包依赖项列表。 -
Maven bundle 插件 无法 找出动态依赖项。例如,如果您的 Java 代码明确调用类加载类来动态加载类,则捆绑插件不会考虑它,而所需的 Java 软件包不会在生成的
Import-Package
标头中列出。 -
如果您定义了 Blueprint XML 文件(例如在
OSGI-INF/blueprint
目录中),则 在运行时自动解析 来自 Blueprint XML 文件的任何依赖项。