【问题标题】:OSGi module causes runtime error when running it from Netbeans从 Netbeans 运行 OSGi 模块时会导致运行时错误
【发布时间】:2013-07-08 17:25:28
【问题描述】:

我们正在开发一个包含 NB 模块和 OSGi 模块的 Netbeans RCP 应用程序。在运行开发的 RCP 应用程序时,它会在 ServiceTracker(ServiceTrackerCustomizer) 构造函数上给出 NoSuchMethodFoundException。

奇怪的是,当这个应用程序被打包为 .Zip 发行版并从 .Zip 包中提取和执行时,它可以工作。此外,此应用程序在某些机器上运行良好(具有相同的版本和配置),它会在其他机器上给出相同的错误。

有什么解决办法吗?是我们在 RCP 和 OSGi 配置中犯了错误,还是这是 Netbeans 安装问题?

这个问题我查了很久,一直没找到解决办法。

配置:

Windows 8 x64 Netbeans 7.3 或 7.3.1(两个版本中的任何一个)

谢谢...

【问题讨论】:

  • 哪个方法名??如果您要报告 NoSuchMethodError... ;-) 说明这一点很重要
  • 您的更新没有意义。 ServiceTrackerCustomizer 没有构造函数,它是一个接口。发布实际的堆栈跟踪怎么样?
  • 你说得对,再次更新,由于安全问题,我无法提供任何堆栈跟踪。我希望我能。

标签: java netbeans osgi netbeans-7 rcp


【解决方案1】:

在 4.3 版中,ServiceTracker 添加了一个额外的构造函数(将java.lang.Class 作为第二个参数的构造函数)。您可能针对比 NetBeans 支持的更高版本的 OSGi 开发捆绑包。

通常可以通过适当的版本控制来避免此类错误。您的包应导入版本范围为[1.5,2.0) 的 org.osgi.util.tracker 包,如下所示:

Import-Package: org.osgi.util.tracker; version="[1.5,2.0)"

如果 NetBeans 不支持 OSGi R4.3(我不知道自己是否支持),那么您应该针对 R4.2 进行开发并避免使用 4.3 中添加的其他方法。

【讨论】:

  • 您的答案似乎很相关,但奇怪的是,从 IDE 运行 RCP App 时它不起作用,但它在打包为 .Zip 发行版时运行。
  • 从 IDE 启动与启动导出的 zip 之间的运行时配置可能存在差异的原因有很多。例如,如果您能够让 OSGi Gogo shell 正常工作,请查看 bundle 0,它代表核心 OSGi 框架包,并查看它是否是不同的版本。
  • 感谢您对运行 OSGi 版本的指导帮助很大。你是对的,只是 Netbeans 尝试使用 4.2 运行时,但它允许在 5.0.0 核心库上进行开发
  • 但是我们如何才能将自动添加的4.2纲要更改为4.3,它说netbeans支持cmpn 4.3?
  • 我对 NetBeans 的了解不够,无法回答最后一个问题,抱歉。
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多