java - 找出任何 .jar 包的依赖项

标签 java osgi bundles

我正在使用 Eclipse 开发 OSGi 包。我使用 Eclipse OSGi 运行时配置测试代码。

代码在那里工作正常,但是当我将包导出为 jars 并尝试在另一个环境(例如 pax-runner)中使用它们时,我在运行时遇到 ClassNotFound 异常。 bundle 安装正常,没有错误。我在春分点执行命令:“diag bundle-number”,它说:“没有 Unresolved 约束”对于每个包。

我想知道是否有工具/方法可以知道,对于给定的 .jar 包,它是否需要任何外部库,这在 manifest.mf 中没有描述。

最佳答案

如果在运行时找到 Import-Package 中列出的所有包(以及 Require-Bundle 中列出的包),您的包将被解析。如果解析后出现ClassNotFoundExceptionNoClassDefFoundError,说明Import-Package的内容有误。

看看 Bnd tool by Peter Kriens .这会对从您的类编译的字节码执行静态检查以发现确切的依赖关系,并为您生成 Import-Package 语句。一般来说,如果你使用 Bnd,你永远不会看到 ClassNotFound/NoClassDefFound,除非按名称动态加载类,例如使用 Class.forName()

关于java - 找出任何 .jar 包的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609982/

相关文章:

java - 我应该为 java/grails 项目使用哪个 StatsD 客户端?

java - Spring Bean 配置文件和 OSGI

java - Java 的国际化

html - 为什么我的 Scripts.RenderSection 不能用于 jqGrid?

java - Spring MVC(无法按正确的顺序实例化我的对象)

java - 如何在 Struts2 中使用 anchor 而不是提交按钮?

java - 如何为多个对象制作表单输入字段?

java - ServiceTracker 与 BundleTracker

java - 如何在 SpringDM 中将 bundleContext 引用传递给 bean

Android 将信息传递给 SingleInstance Activity