java - R3 导入不能包含指令

标签 java osgi fuseesb

我有一个 JBoss Fuse 6.0.0。我想在其中部署包含在 jar 中的 OSGI 包的服务器。部署后,服务器日志包含以下异常:

13:54:01,802 | INFO  | l Console Thread | Console                          | 15 - org.apache.karaf.shell.console - 2.3.0.redhat-60024 | Exception caught while executing command
org.apache.karaf.shell.console.MultiException: Error installing bundles:
    Unable to install bundle file:/tmp/my-war-1.0.0-SNAPSHOT.jar
    at org.apache.karaf.shell.console.MultiException.throwIf(MultiException.java:91)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.karaf.shell.osgi.InstallBundle.doExecute(InstallBundle.java:70)[47:org.apache.karaf.shell.osgi:2.3.0.redhat-60024]
    at org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.karaf.shell.console.jline.Console.run(Console.java:176)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
    at org.apache.karaf.shell.console.jline.DelayedStarted.run(DelayedStarted.java:61)[15:org.apache.karaf.shell.console:2.3.0.redhat-60024]
Caused by: java.lang.Exception: Unable to install bundle file:/tmp/my-war-1.0.0-SNAPSHOT.jar
    at org.apache.karaf.shell.osgi.InstallBundle.doExecute(InstallBundle.java:45)[47:org.apache.karaf.shell.osgi:2.3.0.redhat-60024]
    ... 11 more
Caused by: org.osgi.framework.BundleException: R3 imports cannot contain directives.
    at org.apache.felix.framework.util.manifestparser.ManifestParser.normalizeImportClauses(ManifestParser.java:351)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:163)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.BundleRevisionImpl.<init>(BundleRevisionImpl.java:119)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1199)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:96)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.Felix.installBundle(Felix.java:3080)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
    at org.apache.karaf.shell.osgi.InstallBundle.doExecute(InstallBundle.java:43)[47:org.apache.karaf.shell.osgi:2.3.0.redhat-60024]
    ... 11 more

捆绑 list 不包含任何我认为是指令的内容(尽管我可能是错误的):

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: root
Build-Jdk: 1.7.0_25
FAB-Provided-Dependency: org.apache.cxf:*
                            org.apache.camel:* 
                            [...SNIP...]
                            org.quartz:*
FAB-Version-Range-Digits: 0
Import-Package: bsh;resolution:="optional",
                                edu.emory.mathcs.backport.java.util.concurrent;resolution:="optional",
                            [...SNIP...]
                            org.bouncycastle.util;resolution:="optional",                               
                            *
ProjectVersion: 1.0.0-SNAPSHOT
SVNRevisionNumber: 

错误消息的 Google 结果没有多大帮助。有人可以帮助澄清或解决这个问题吗?

最佳答案

您的 list 文件缺少以下条目:

Bundle-ManifestVersion: 2
Bundle-SymbolicName: .....

如果没有这些,您的 bundle 将被假定符合 OSGi R3 规范,因此 resolution:="optional" 无效。如果您添加这些 list 条目,该 bundle 将被视为符合 R4 标准并且应该可以工作。

关于java - R3 导入不能包含指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21457551/

相关文章:

java - 如何在 java 中多次调用 launch()

java - java中的字符串长度

java - OSGi 服务 : java. lang.UnsatisfiedLinkError 调用 DLL - 当 DLL 作为单元测试调用时没有错误

apache-camel - Apache Camel :bindy illegal argument exception

java - 无法在 Windows 中获取 Java 版本

java - gMapsFX netscape.javascript.JSException : ReferenceError

java - 使用配置文件构建 Maven 项目

osgi - 如何从 OSGi Bundle 中使用 Java 扩展执行 XSLT 转换

java - 在 JBoss Fuse 中处理非 OSGI 依赖项的传递依赖项

java - ActiveMQ 生产者生成堆转储