我写了一个包含5个模块的项目。我用maven在intellij IDEA中创建它们,然后为所有模块添加“OSGi”框架支持。我使用maven-bundle-plugin来配置导出包和导入包。但是当我运行它的时候,总是有一个错误:
org.osgi.framework.BundleException: Unable to resolve org.gxkl.launcher [12] (R 12.0): missing requirement [org.gxkl.launcher [12](R 12.0)] osgi.wiring.package; (osgi.wiring.package=org.gxkl.server).
启动器模块包含Bundle-Activator,org.gxkl.server包在服务模块中。我使用类似的pom来配置模块,但是只有服务模块出错。启动器中的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>${parent.artifactId}</artifactId>
<groupId>${parent.groupId}</groupId>
<version>${parent.version}</version>
</parent>
<modelVersion>${model.version}</modelVersion>
<artifactId>launcher</artifactId>
<packaging>bundle</packaging>
<dependencies>
...
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>service</artifactId>
<version>${project.version}</version>
</dependency>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Activator>org.gxkl.Starter</Bundle-Activator>
<Export-Package>
org.gxkl
</Export-Package>
<Import-Package>
<!--some packages in other modules. They work fine-->
...
org.gxkl.server <!--packge in service modules. It doesn't work fine-->
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
服务中的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>${parent.artifactId}</artifactId>
<groupId>${parent.groupId}</groupId>
<version>${parent.version}</version>
</parent>
<modelVersion>${model.version}</modelVersion>
<artifactId>service</artifactId>
<packaging>bundle</packaging>
<description>...</description>
<dependencies>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>
org.gxkl.server,
...
</Export-Package>
<Import-Package>
...
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
该错误消息意味着bundle launcher
导入包< code>org.gxkl.server,但是在导出该包的框架中没有bundle。
顺便说一下,您可以删除< code >
问题内容: 我是OSGI的新手,我试图找出解决以下错误的方法 org.osgi.framework.BundleException:包org.foo.serviceBundle中未解决的约束[253]:无法解决253.0:缺少要求[253.0]包;未解决。(&(package = org.slf4j)(版本> = 1.6.0)(!(版本> = 2.0.0))) 我使用了Maven原型来生成包,并在
我得到了<code>缺少的要求osgi.wiring。包…部署包时出错,缺少的包来自库(maven依赖项),因此包在其<code>类路径中 我的理解是:当使用来自另一个<code>OSGI捆绑包,但事实并非如此,这只是一个自制的库(没有部署到OSGI容器,甚至没有捆绑包),所以我一定不太明白
我试图用bndool编写一个OSGI REST包。 我在cnf项目中添加了我需要的所有罐。然后我把它们添加到捆绑包构建路径中。 我得到以下运行时异常 OSGi捆绑包未启动:缺少需求osgi.wiring.package( 我不明白这个错误,因为我使用了javax.ws.rs-api 2.0.1。 我试图在构建路径中明确指定版本,如下所示 没有任何运气。 我用错罐子了吗? 非常感谢。 这是我的bnd
我一直在努力遵循‘用OSGi构建模块化云应用’。在“创建第一个OSGi应用程序”一书的第3章中,作者描述了如何使用BNDtools在eclipse中创建一个带有服务的简单OSGi应用程序。 下面是我的类和配置的截图。 我面临的问题是 G!gogo:CommandNotFoundException:找不到命令:llb G! G! G! lb开始级别1 IDState级别名称
我正在apache Karaf 3.0.3中创建一个简单的Echo服务包,我有我的Activator类, 我可以通过Eclipse创建捆绑包,使用以下Manniest文件 我还有下面的POM文件 也是我的回声课 当我在karaf 3.0.3上部署此应用程序时,我面临以下问题 > 在尝试启动包时获取以下堆栈跟踪 错误:Bundle com。公司osgi[112]启动/停止捆绑包时出错。(org.os
我试图在EclipseIDE中运行Equinox的区域有向图束。当我在OSGi命令提示符下使用start命令运行相关的bundle时,我收到一个错误,表示无法解析该bundle。原因:缺少约束:导入包:org.osgi.framework.hooks。捆version=“1.0.0”。为了找出框架中的现有版本,我尝试了命令p org.osgi.framework.hooks.bundle。结果显示