首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将驼峰代码部署到ServiceMix时,OSGi缺少需求org.wiring.package = org.hsqldb ( FuseESB )

将驼峰代码部署到ServiceMix时,OSGi缺少需求org.wiring.package = org.hsqldb ( FuseESB )
EN

Stack Overflow用户
提问于 2013-02-15 19:46:27
回答 2查看 7.4K关注 0票数 0

我已经写了一些驼峰代码,但是在WindowsV7.10上部署时,我在日志中得到了以下异常:

代码语言:javascript
复制
Unable to resolve 337.0: missing requirement [337.0] 
osgi.wiring.package; (&(osgi.wiring.package=org.hsqldb)(version>=1.8.0.7)  
(!(version>=2.0.0))) at   
org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4054)

该项目使用Blueprint Maven文件来定义bean,然后使用OSGi构建为jar (与OSGi捆绑包相对),然后热部署到部署目录,因此它由FuseESB OSGi部署人员部署。它对Maven POM中的HSQLDB没有显式依赖关系,所以我假设这是一个传递依赖关系。但是,我已经尝试使用以下命令安装我认为是相关包的包:

osgi:安装mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.hsqldb/1.8.0.10_2

该捆绑包现在在Karaf控制台中显示为活动:

代码语言:javascript
复制
[335] [Active] [ ] [ ] [ 60] Apache ServiceMix :: Bundles :: hsqldb (1.8.0.10_2)

如果我运行命令packages:exports,它似乎显示此捆绑包导出了正确的依赖关系:

代码语言:javascript
复制
FuseESB:karaf@root> packages:exports 335
ID Packages
335 org.hsqldb.resources; version=1.8.0.10
335 org.hsqldb.types; version=1.8.0.10
335 org.hsqldb.jdbc; version=1.8.0.10
335 org.hsqldb.scriptio; version=1.8.0.10
335 org.hsqldb.rowio; version=1.8.0.10
335 org.hsqldb.store; version=1.8.0.10
335 org.hsqldb.index; version=1.8.0.10
335 org.hsqldb.persist; version=1.8.0.10
335 org.hsqldb.lib.java; version=1.8.0.10
335 org.hsqldb.util.sqltool; version=1.8.0.10
335 org.hsqldb; version=1.8.0.10
335 org.hsqldb.sample; version=1.8.0.10
335 org.hsqldb.util; version=1.8.0.10
335 org.hsqldb.lib; version=1.8.0.10

但是,我的包仍然无法启动,并给出相同的错误。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-16 16:18:55

您可以将HSQLDB作为depedendecy添加到pom.xml文件中的项目中。然后FAB应该自动安装它,并将它包含在类路径空间中。

如果您想要预安装它,或者使用共享包,那么您可以将作用域定义为

代码语言:javascript
复制
<scope>provided</scope>

然后FAB将使用共享捆绑包。你可以在这里阅读到:http://fuse.fusesource.org/bundle/overview.html

在即将发布的Camel2.11上还有一个新的SQL示例:http://camel.apache.org/sql-example.html。它在OSGi中也可以工作,因为我们在示例中包含了一个features.xml文件,地址是:https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-sql/

尽管由于常见的OSGi问题,我们不得不在felix bundle-plugin中添加动态导入:(

票数 2
EN

Stack Overflow用户

发布于 2013-02-16 04:30:07

好的,我看到问题了:这是对版本的误解。

您已经安装的HSQLDB包正在将包org.hsqldb导出为版本1.8.0.10。您的捆绑包至少需要1.8.0.7版。您可能认为这不是问题,但实际上1.8.0.10比1.8.0.7!!

OSGi版本有三个数字段(主、次、微)和一个称为限定符的字母数字段。这里,限定符分别是"10“和"7”。当作为字母数字字符串进行比较时,"10“小于" 7”,因为"10“的第一个字符是1,它在7之前。作为参考,限定符是使用标准Java库中的String.compare()方法进行比较的,因此请参阅该方法的JavaDocs以获取算法的完整描述。

如何解决这个问题?好吧,你的捆绑包337 (不管它是什么)对它所需要的版本太具体了。它可能会导入1.8以上的任何内容,如下所示:[1.8,2.0)...或者甚至是版本1以上的任何东西:[1, 2)

另外,我认为HSQLDB的作者在限定符段中使用了一个看起来像数字的东西,这是一个错误。但是,除非您自己是HSQLDB的作者,否则我认为您对此无能为力。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14894051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档