【问题标题】:Wrap protocol: unhandled parameters (features.xml)包装协议:未处理的参数(features.xml)
【发布时间】:2017-05-12 22:13:45
【问题描述】:

我根据How to run Vaadin 7 applications in Karaf?创建了一个features.xml

所以我得到了这些行:

<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

我将 Bundle-SymbolicNameyuicompressor 更改为不同的内容,并且更改不会影响标题。所以 wrap: 根本不起作用。

当我直接输入时(将'&amp;amp;' 替换为'&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;amp;&amp;

  4. 将 URI 包装成 &lt;![CDATA[]]&gt;

我的假设是,Pax URL 会(或不会)在这里发挥它的魔力。似乎根本无法识别参数。 bundle:list 总是显示相同的结果。

我使用的是 karaf-4.1.1,而后者又坚持使用 OSGi-R6。

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

【问题讨论】:

    标签: installation bundle apache-karaf


    【解决方案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.jar 和这个MANIFEST.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
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 2014-01-14
      • 1970-01-01
      • 2014-09-03
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2011-01-30
      相关资源
      最近更新 更多