带有描述符的生命周期方法的非注释参数
Non annotation argument to lifecycle method with descriptor
我正在向现有的 OSGI 7 项目添加 Maven 构建功能。它在 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 (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);
}
我的 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>
我不知道是什么导致了这个问题。对使用 Maven 构建 OSGi 7 项目时如何解决的一些想法表示赞赏。
谢谢,
兰迪
BJ Hargrave 指出我使用的是旧版本的 bnd-maven-plugin。更新到 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>
我正在向现有的 OSGI 7 项目添加 Maven 构建功能。它在 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 (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);
}
我的 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>
我不知道是什么导致了这个问题。对使用 Maven 构建 OSGi 7 项目时如何解决的一些想法表示赞赏。
谢谢, 兰迪
BJ Hargrave 指出我使用的是旧版本的 bnd-maven-plugin。更新到 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>