我是Apache karaf和OSGI的新手。我正在尝试编写和运行一个非常简单的捆绑包。但是我在启动该捆绑包时遇到了这个错误:
执行命令时出错:在捆绑包上执行命令时出错:无法解析karaf[86](R 86.0):缺少需求[karaf[86](R 86.0)]osgi。装电线。包裹(osgi.wiring.package=bundle)未解决的需求:[[karaf[86](R 86.0)]osgi。装电线。包裹(osgi.wiring.package=bundle)]
我的pom是:4.0.0
<groupId>com</groupId>
<artifactId>karaf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>karaf Bundle</name>
<description>
karaf OSGi bundle project.
</description>
<properties>
<maven-bundle-plugin.version>2.5.4</maven-bundle-plugin.version>
<osgi.version>6.0.0</osgi.version>
</properties>
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>${osgi.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${maven-bundle-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Activator>bundle.Activator</Bundle-Activator>
<Export-Package>
bundle*;version=${project.version}
</Export-Package>
<Import-Package>
org.osgi.framework,*
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
我的舱单。mf文件在这里。
> Manifest-Version: 1.0
Bnd-LastModified: 1394131053386
Bundle-Copyright: Copyright (c) OSGi Alliance (2000, 2014). All Rights R
eserved.
Bundle-Description: OSGi Core Release 6, Interfaces and Classes for use
in compiling bundles.
Bundle-License: http://opensource.org/licenses/apache2.0.php; link="http
://www.apache.org/licenses/LICENSE-2.0"; description="Apache License, V
ersion 2.0"
Bundle-ManifestVersion: 2
Bundle-Name: osgi.core
Bundle-SymbolicName: osgi.core
Bundle-Vendor: OSGi Alliance
Bundle-Version: 6.0.0.201403061837
Created-By: 1.6.0_45 (Sun Microsystems Inc.)
DynamicImport-Package: *
Export-Package: org.osgi.dto;version="1.0",org.osgi.resource;version="1.
0",org.osgi.resource.dto;version="1.0";uses:="org.osgi.dto",org.osgi.fr
amework;version="1.8",org.osgi.framework.dto;version="1.8";uses:="org.o
sgi.dto",org.osgi.framework.hooks.bundle;version="1.1";uses:="org.osgi.
framework",org.osgi.framework.hooks.resolver;version="1.0";uses:="org.o
sgi.framework.wiring",org.osgi.framework.hooks.service;version="1.1";us
es:="org.osgi.framework",org.osgi.framework.hooks.weaving;version="1.1"
;uses:="org.osgi.framework.wiring",org.osgi.framework.launch;version="1
.2";uses:="org.osgi.framework",org.osgi.framework.namespace;version="1.
1";uses:="org.osgi.resource",org.osgi.framework.startlevel;version="1.0
";uses:="org.osgi.framework",org.osgi.framework.startlevel.dto;version=
"1.0";uses:="org.osgi.dto",org.osgi.framework.wiring;version="1.2";uses
:="org.osgi.framework,org.osgi.resource",org.osgi.framework.wiring.dto;
version="1.2";uses:="org.osgi.dto,org.osgi.resource.dto",org.osgi.servi
ce.condpermadmin;version="1.1.1";uses:="org.osgi.framework,org.osgi.ser
vice.permissionadmin",org.osgi.service.packageadmin;version="1.2";uses:
="org.osgi.framework",org.osgi.service.permissionadmin;version="1.2",or
g.osgi.service.startlevel;version="1.1";uses:="org.osgi.framework",org.
osgi.service.url;version="1.0",org.osgi.util.tracker;version="1.5.1";us
es:="org.osgi.framework"
Import-Package: javax.security.auth.x500;resolution:=optional
Tool: Bnd-2.2.0.20130927-173453
让我们来分析一下:“缺少需求”仅仅意味着您的捆绑包已安装到OSGi框架中,但它有一个其他任何已安装的捆绑包都无法满足的需求。
未解决的需求位于名称空间osgi中。装电线。package
,这意味着需求类型是Java包导入,即您在包的清单中看到的导入包。换句话说,您的捆绑包导入一个包,而没有其他捆绑包导出该包。
最后,结尾的位,
(osgi.wiring.package=bundle)
,是一个过滤器,它表达了您的bundle需要的确切包名。在这种情况下,您的bundle显然导入了一个名为“bundle”的包。
这有点奇怪,这意味着您可能在构建包的方式上犯了错误。如果您发布有关如何构建此捆绑包的详细信息,将会有所帮助。
提前感谢您的帮助!我正在学习一个教程,当我尝试启动我在karaf中安装的捆绑包时,它不会启动...日志是: 20:12:18.713 错误 [Karaf 本地控制台用户 karaf] 执行命令 org.apache.karaf.shell.support.MultiException 时捕获异常:在捆绑包上执行命令时出错:启动捆绑包 157 时出错:无法解析 db-examplejpa [157]
我试图用bndool编写一个OSGI REST包。 我在cnf项目中添加了我需要的所有罐。然后我把它们添加到捆绑包构建路径中。 我得到以下运行时异常 OSGi捆绑包未启动:缺少需求osgi.wiring.package( 我不明白这个错误,因为我使用了javax.ws.rs-api 2.0.1。 我试图在构建路径中明确指定版本,如下所示 没有任何运气。 我用错罐子了吗? 非常感谢。 这是我的bnd
我有一个使用OSGi-(felix)、SpringDM、hibernate和maven的项目。当我安装捆绑包时,它是正常的,当我运行捆绑包id时的输出是: 这是我在启动此捆绑包时看到的: 这是我的beans.xml: 这是我的pom文件: 此外,在felix中存在一个完整的捆绑错误。
我试图启动一个OSGI REST包.我把下面的导入包: 当我运行捆绑包时,我得到以下错误:osgi.wiring.package;过滤器:="(
问题内容: 在我的AEM项目的代码中看似无关紧要的更改之后,我的捆绑软件无法解决。检查日志后,我可以看到出现以下错误。 该项目在本地编译得很好,并且只有在容器尝试解决该捆绑包后,该问题才会出现。 我没有在任何更改中添加任何显式依赖项。项目对象模型与以前相同。顾名思义,这是一个核心Java软件包,因此我希望它会被System软件包公开。 我正在运行AEM支持的JDK 7,所以不要指望它与JVM兼容性
提前感谢。我有问题启动一个osgi捆绑包,它给出了这个错误消息:包/捆绑包将不安装。它编译,并构建好,当部署到Karaf时,它不会加载和抱怨丢失的布线包,看起来像是正在导出和导入。但是缺少一个版本id。 执行命令时出错:无法启动bundle mvn:com。通用电气。数字的passthru/passthrumt1。dataserviceimpl/1.0.1-SNAPSHOT在功能部件passthr