0

我正在尝试将示例 OSGI 捆绑包部署到我在 Karaf 中加载的本地 maven 存储库并收到错误

karaf@root> features:addurl mvn:io.spray/on-karaf/1.2-M8
[Fatal Error] :1:1: Content is not allowed in prolog.
Error executing command: Unable to add repositories:
    Content is not allowed in prolog.

这是我的features.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="io.spray.examples.karaf">
    <feature name="io.spray.examples.karaf" version="1.2-M8">
        <bundle>mvn:io.spray/on-karaf/1.2-M8</bundle>

        <bundle>mvn:com.typesafe.akka/akka-osgi_2.10/2.2.0-RC2</bundle>
        <bundle>mvn:com.typesafe/config/1.0.1</bundle>
        <bundle>wrap:mvn:com.chuusai/shapeless_2.10.0-RC5/1.2.3</bundle>
        <bundle>mvn:org.parboiled/parboiled-core/1.1.5</bundle>
        <bundle>mvn:org.parboiled/parboiled-scala_2.10/1.1.5</bundle>
        <bundle>mvn:org.scala-lang/scala-library/2.10.0</bundle>
        <bundle>mvn:org.scala-lang/scala-reflect/2.10.0</bundle>
        <bundle>mvn:io.spray/spray-util/1.2-M8</bundle>
        <bundle>mvn:com.googlecode.concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.3.2</bundle>
        <bundle>mvn:io.spray/spray-caching/1.2-M8</bundle>
        <bundle>mvn:io.spray/spray-http/1.2-M8</bundle>
        <bundle>mvn:io.spray/spray-io/1.2-M8</bundle>
        <bundle>mvn:io.spray/spray-can/1.2-M8</bundle>
        <bundle>mvn:org.jvnet.mimepull/mimepull/1.9.2</bundle>
        <bundle>mvn:io.spray/spray-httpx/1.2-M8</bundle>
        <bundle>mvn:io.spray/spray-routing/1.2-M8</bundle>

        <bundle>wrap:mvn:io.spray/spray-json/1.2.5</bundle>
    </feature>
</features>

这是MANIFEST.MF

Manifest-Version: 1.0
Implementation-Vendor: io.spray
Implementation-Title: on-karaf
Implementation-Version: 1.2-M8
Implementation-Vendor-Id: io.spray
Specification-Vendor: io.spray
Specification-Title: on-karaf
Implementation-URL: http://spray.io
Specification-Version: 1.2-M8

我认为我的MANIFEST.MF可能不正确,这可能是原因吗?我是 Karaf、OSGI 和 maven 的新手,所以我可能错过了重要的一步。

4

3 回答 3

1

特点:addUrl 行错误。mvn:io.spray/on-karaf/1.2-M8指向一个 JAR,因此在其上使用 addurl 将尝试解析 jar 文件,就好像它是 XML 一样。如果您的 feature.xml 在 JAR 文件中,您必须直接引用 XML:

features:addurl mvn:io.spray/on-karaf/1.2-M8/xml/features

http://fusesource.com/docs/esb/4.2/deploy_osgi/DeployFeatures-Create.html

于 2013-07-05T13:37:33.543 回答
0

我在开会时遇到过这个错误。问题是那里的 wlan 路由器需要使用 Web 表单进行身份验证。我打开了wlan,但没有通过身份验证。因此,对于每个 url,表单都会返回。

添加功能或安装捆绑包时,这可能会导致使用无效内容。就我而言,情况更糟,因为 maven 在 maven repo 中缓存了一些无效内容。所以即使我的 wlan 再次工作,我也不得不删除这些文件。

您可以通过在 maven 控制台中的功能 url 上执行 cat 来检查此问题是否发生在您身上:

猫 mvn:io.spray/on-karaf/1.2-M8

于 2013-07-05T13:47:09.967 回答
0

您必须将项目打包设置为pom而不是 (默认) jar,以便资源直接放置在存储库中,而不是放在 jar 中。添加 <packaging>pom</packaging>到你的 maven pom,重新部署,你应该没问题。(在卡拉夫,执行features:addurl mvn:io.spray/on-karaf/1.2-M8/xml/features。)这至少对我有用。

于 2013-09-27T12:40:18.930 回答