При установке функции Karaf выбрасывается значение Unsupported 'Bundle-ManifestVersion': 1

Привет, ребята, я получаю приведенную ниже ошибку при использовании установки feture в karaf

org.apache.karaf.features.internal.util.MultiException: Error
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader.<init>(MavenDownloadManager.java:84)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager.createDownloader(MavenDownloadManager.java:72)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:358)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem.downloadBundles(Subsystem.java:355)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:191)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1079)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:975)[9:org.apache.karaf.features.core:4.0.3]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_79]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_79]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]
Caused by: java.lang.Exception: Unable to create resource for bundle mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT
    at org.apache.karaf.features.internal.region.Subsystem.createResource(Subsystem.java:567)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem$1.downloaded(Subsystem.java:376)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:133)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.MavenDownloadManager$MavenDownloader$1.operationComplete(MavenDownloadManager.java:127)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListener(DefaultFuture.java:344)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.notifyListeners(DefaultFuture.java:329)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.DefaultFuture.setValue(DefaultFuture.java:255)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.AbstractDownloadTask.setFile(AbstractDownloadTask.java:61)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.download.impl.AbstractRetryableDownloadTask.run(AbstractRetryableDownloadTask.java:59)[9:org.apache.karaf.features.core:4.0.3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_79]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_79]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_79]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_79]
    ... 3 more
Caused by: org.osgi.framework.BundleException: Unable to build resource for mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT: Unsupported 'Bundle-ManifestVersion' value: 1
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.build(ResourceBuilder.java:80)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.build(ResourceBuilder.java:69)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.region.Subsystem.createResource(Subsystem.java:565)[9:org.apache.karaf.features.core:4.0.3]
    ... 15 more
Caused by: org.osgi.framework.BundleException: Unsupported 'Bundle-ManifestVersion' value: 1
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.doBuild(ResourceBuilder.java:88)[9:org.apache.karaf.features.core:4.0.3]
    at org.apache.karaf.features.internal.resolver.ResourceBuilder.build(ResourceBuilder.java:78)[9:org.apache.karaf.features.core:4.0.3]
    ... 17 more

feature.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" name="Diff-Blueprint">
    <feature name="Diff-Blueprint" description="Diff-Blueprint" version="0.0.1.SNAPSHOT">
        <feature prerequisite="true" dependency="false">wrap</feature>
        <bundle>mvn:org.dt.dummy/Diff-Blueprint/0.0.1-SNAPSHOT</bundle>
        <bundle>wrap:mvn:osgi/osgi/3.0.1</bundle>
        <bundle>wrap:mvn:javax.xml/xml/3.1.0</bundle>
        <bundle>wrap:mvn:xmlunit/xmlunit/1.6</bundle>
        <bundle>wrap:mvn:junit/junit/4.11</bundle>
        <bundle>wrap:mvn:org.hamcrest/hamcrest-core/1.3</bundle>
        <bundle>mvn:com.googlecode.json-simple/json-simple/1.1.1</bundle>
        <bundle>wrap:mvn:de.odysseus.staxon/staxon-jackson/1.2</bundle>
        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.0.6</bundle>
        <bundle>wrap:mvn:de.odysseus.staxon/staxon/1.2</bundle>
        <bundle>mvn:log4j/log4j/1.2.17</bundle>
        <bundle>mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.13</bundle>
        <bundle>mvn:org.codehaus.jackson/jackson-core-asl/1.9.13</bundle>
        <bundle>wrap:mvn:org.unitils/unitils/2.4</bundle>
        <bundle>wrap:mvn:commons-logging/commons-logging/1.1</bundle>
        <bundle>wrap:mvn:commons-dbcp/commons-dbcp/1.2.2</bundle>
        <bundle>wrap:mvn:commons-pool/commons-pool/1.3</bundle>
        <bundle>wrap:mvn:commons-lang/commons-lang/2.3</bundle>
        <bundle>wrap:mvn:commons-collections/commons-collections/3.2</bundle>
        <bundle>wrap:mvn:ognl/ognl/2.6.9</bundle>
        <bundle>wrap:mvn:ant/ant/1.6.5</bundle>
    </feature>
</features>

3 ответа

Решение

Я нашел решение, если мы обернем банки, которые выбрасывают Bundle-ManifestVersion: 1, тогда это будет работать

Я благодарен за то, что я воскрешаю здесь старую ветку, но уточняю ответ @Charity, для тех, кто узнает об этом позже (как я сделал)...

Проблема в том, что мы пытаемся развернуть пакет, не совместимый с OSGi, в контейнер. Решение состоит в том, чтобы "обернуть" пакет, вызывающий проблемы, с помощью протокола Wrap, описанного в вики OPS4J.

Пример JAR

Простой пример использования Maven показан ниже:

wrap:mvn:commons-logging/commons-logging/1.1

Обратите внимание, что мы должны добавить префикс к "wrap:", и это все. Смотрите вики для более сложных примеров, которые переопределяют настройки, определенные в манифесте.

Пример WAR

Разверните WAR-файл, не совместимый с OSGi, почти таким же образом, используя вместо этого обработчик URI "webbundle":

webbundle:mvn:com.example/example-web-app/1.0/war

Попробуйте отредактировать файл MANIFEST.MF проблемного пакета, просто измените
Bundle-ManifestVersion со значением 2 вместо 1.

Очевидно, что Diff-Blueprint расслоение имеет Bundle-ManifestVersion: 1 в качестве заголовка MANIFEST.MF. Это указывает на то, что он предшествует OSGi Release 4.0, выпущенному в 2005 году, поэтому неудивительно, что современная версия Karaf его не поддерживает.

Так что вам придется изучить инструмент, который создал этот пакет.

Другие вопросы по тегам