Osgi 具有描述符的生命周期方法的非注释参数
我正在将Maven构建功能添加到现有的OSGi7项目中。它在Eclipse中使用bnd和Gradle构建得很好。但在使用Maven构建时,我遇到了以下错误:Osgi 具有描述符的生命周期方法的非注释参数,osgi,Osgi,我正在将Maven构建功能添加到现有的OSGi7项目中。它在Eclipse中使用bnd和Gradle构建得很好。但在使用Maven构建时,我遇到了以下错误: [ERROR] /Users/randy/projects/xyz/src/com.xyz.masterdata/com.xyz.masterdata.core.logic.provider/bnd.bnd [0:0]: Non annotation argument to lifecycle method with descriptor
[ERROR] /Users/randy/projects/xyz/src/com.xyz.masterdata/com.xyz.masterdata.core.logic.provider/bnd.bnd [0:0]: Non annotation argument to lifecycle method with descriptor (Lorg/osgi/service/transaction/control/TransactionControl;Lorg/osgi/service/transaction/control/jdbc/JDBCConnectionProvider;)V, type org/osgi/service/transaction/control/TransactionControl
[ERROR] /Users/randy/projects/xyz/src/com.xyz.masterdata/com.xyz.masterdata.core.logic.provider/bnd.bnd [0:0]: Non annotation argument to lifecycle method with descriptor (Lorg/osgi/service/transaction/control/TransactionControl;Lorg/osgi/service/transaction/control/jdbc/JDBCConnectionProvider;)V, type org/osgi/service/transaction/control/jdbc/JDBCConnectionProvider
有问题的代码如下所示,特别是带有@Activate注释的构造函数方法:
@Component(property = {
"provider.target=(databaseName=MasterData)"
})
public class ConsumerChannelDaoImpl implements ConsumerChannelDao
{
private final TransactionControl _transactionControl;
private Connection _connection;
@Activate
public ConsumerChannelDaoImpl(@Reference TransactionControl txControl, @Reference(name = "provider") JDBCConnectionProvider provider)
{
_transactionControl = txControl;
_connection = provider.getResource(txControl);
}
My pom.xml具有以下依赖项:
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.annotation</artifactId>
<version>7.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId>
<version>7.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
<version>7.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.http.whiteboard</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.jaxrs</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.jdbc</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
....
</dependencies>
org.osgi
osgi.annotation
7.0.0
假如
org.osgi
osgi.core
7.0.0
假如
org.osgi
osgi.cmpn
7.0.0
假如
org.osgi
org.osgi.service.http.whiteboard
1.1.0
假如
org.osgi
org.osgi.service.jaxrs
1.0.0
org.osgi
org.osgi.service.jdbc
1.0.0
假如
....
我不知道是什么导致了这个问题。在使用Maven构建OSGi7项目时,关于如何解决问题的一些想法值得赞赏
谢谢,
RandyBJ Hargrave指出我使用的是旧版本的bnd maven插件。更新到v4.3.1就成功了
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>4.3.1</version>
<executions>
<execution>
<id>default-bnd-process</id>
<goals>
<goal>bnd-process</goal>
</goals>
</execution>
</executions>
</plugin>
商务英语
bnd-maven插件
4.3.1
默认bnd进程
bnd工艺
您没有提到您用于maven插件的Bnd版本。有可能您使用的是旧版本的Bnd,它不支持构造函数注入。。。将bnd maven插件更新为4.3.1,效果非常好。谢谢你的帮助。