包装协议:未处理的参数(功能.xml)



我创建了一个功能.xml根据如何在卡拉夫运行Vaadin 7应用程序?

所以我得到了这些行:

<feature name="vaadin-common" version="7.6.8">
<!-- preceding code -->
<bundle>wrap:mvn:com.yahoo.platform.yui/yuicompressor/2.4.8$Bundle-SymbolicName=com.yahoo.platform.yui.compressor&amp;Bundle-Version=2.4.8</bundle>
<bundle>wrap:mvn:javax.validation/validation-api/1.0.0.GA$BundleSymbolicName=javax-validation-api&amp;Bundle-Version=1.0.0.GA</bundle>
<bundle>wrap:mvn:com.google.appengine/appengine-api-1.0-sdk/1.7.7$BundleSymbolicName=com-google-appengine-api-1.0-sdk&amp;Bundle-Version=1.7.7</bundle>
<!-- appending code -->
</feature>

当我做一个feature:install vaadin-common所有东西都会安装,但只有yuicompressor被正确包装

Bundle-SymbolicName: com.yahoo.platform.yui.compressor
Bundle-Version: 2.4.8

捆绑标头。但对于其他两个,这不适用:

karaf@root()>bundle:list
1335│ Active   │  80 │ 2.4.8         │ com-yahoo-platform-yui-yuicompressor
1336│ Active   │  80 │ 1.7.7         │ wrap_file__home_mine_.m2_repository_com_google_appengine_appengine-api-1.0-sdk_1.7.7_appengine-api-1.0-sdk-1.7.7.jar_BundleSymbolicName_com.google.appengin
1337│ Active   │  80 │ 1.0.0.GA      │ wrap_file__home_mine_.m2_repository_javax_validation_validation-api_1.0.0.GA_validation-api-1.0.0.GA.jar_BundleSymbolicName_javax.validation.validation-api

我将yuicompressorBundle-SymbolicName更改为其他内容,并且更改不会影响标题。所以包装:根本不起作用。

当我直接输入它时(用'&'替换'&amp;'):

karaf@root()>bundle:install 'wrap:mvn:javax.validation/validation-api/1.0.0.GA$BundleSymbolicName=javax-validation-api&Bundle-Version=1.0.0.GA'
Bundle ID: 420
karaf@root()>bundle:list
ID │ State     │ Lvl │ Version  │ Name
420 │ Installed │  80 │ 1.0.0.GA │ javax-validation-api

一切正常...

我试过了:

  1. $BundleSymbolicName替换为$Bundle-SymbolicName

  2. 跳过Bundle-SymbolicName/Bundle-Version,两者一起跳过

  3. 玩转&amp;&

  4. 将 URI 包装到<![CDATA[]]>

我的假设是,Pax URL在这里确实(或没有)发挥了魔力。似乎根本无法识别参数。bundle:list始终显示相同的结果。

我正在使用karaf-4.1.1,它反过来又坚持使用OSGi-R6。

好的,我尝试使用 karaf-4.0.7,它运行良好。为什么不使用版本 4.1.1?

最后我拔掉了插头:我删除了${karaf.home}/data并重新启动了 karaf。成功了。有点专业...

为了重现,我重置并部署了一个功能文件:

<!-- features.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<features name="javax-validation">
<feature name="javax-validation" version="2">
<!-- Bundle-SymbolicName=foo -->
<bundle><![CDATA[wrap:mvn:javax.validation/validation-api/1.0.0.GA$Bundle-SymbolicName=foo]]></bundle>
</feature>
</features>

并且捆绑包已成功安装:

karaf@root()>feature:install javax-validation
karaf@root()>bundle:list
ID │ State     │ Lvl │ Version │ Name
59 │ Active    │  80 │ 0       │ foo

由于我删除了${karaf.home}/data,我的猜测是,我的问题是由某些缓存引起的。

所以我修改了features.xml并再次部署:

<!-- features.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<features name="javax-validation">
<feature name="javax-validation" version="2">
<!-- Bundle-SymbolicName=bar -->
<bundle><![CDATA[wrap:mvn:javax.validation/validation-api/1.0.0.GA$Bundle-SymbolicName=bar]]></bundle>
</feature>
</features>

和:

karaf@root()>feature:install javax-validation
karaf@root()>bundle:list
ID │ State     │ Lvl │ Version │ Name
60 │ Active    │  80 │ 0       │ foo

医 管 局!来了!没有变化。

最后,我在${karaf.home}/data/tmp内部发现了一个validation-api-1.0.0.GA.jarMANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Bnd-LastModified: 1494796142136
Build-Jdk: 1.5.0_20
Built-By: hardy
Bundle-ManifestVersion: 2
Bundle-Name: foo
Bundle-SymbolicName: foo
Bundle-Version: 0
Created-By: 1.8.0_131 (Oracle Corporation)
Export-Package: tl.dr*
Generated-By-Ops4j-Pax-From: wrap:file:/home/johndoe/.m2/repository/javax
/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar$Bundle-
SymbolicName=foo
Originally-Created-By: Apache Maven
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.5))"
Tool: Bnd-2.3.0.201405100607

干杯!

相关内容

  • 没有找到相关文章

最新更新