Osgi 具有描述符的生命周期方法的非注释参数

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

我正在将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 (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项目时,关于如何解决问题的一些想法值得赞赏

谢谢,
Randy

BJ 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,效果非常好。谢谢你的帮助。