Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.
SOLVED

The attribute reference is undefined for the annotation type Component

Avatar

Level 1

Hi,

 

I am not able to find solution for above error. please find my code snippet below

 

 

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;

@component(/* service = ConfigUtil.class, */ immediate = true,

reference = {
@reference(name = "configutil",  bind = "bindAssetDetailsSelector" 
unbind = "unbindAssetDetailsSelector", service = DataPowerUrlUtil.class,
policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MULTIPLE
) }
)

 

using maven-bundle-plugin version 4.2.1,  <artifactId>org.osgi.service.component.annotations</artifactId> verion 1.4.0,

R7 annotation

 

Thanks,

Sai

1 Accepted Solution

Avatar

Correct answer by
Level 6

Hi Sai, Just check the below and try.

 

@Component(service =  ConfigUtil.class, configurationPolicy = ConfigurationPolicy.REQUIRE, immediate = true)
@Designate(ocd = ConfigUtilImpl.Config.class)

Thanks. 

View solution in original post

4 Replies

Avatar

Correct answer by
Level 6

Hi Sai, Just check the below and try.

 

@Component(service =  ConfigUtil.class, configurationPolicy = ConfigurationPolicy.REQUIRE, immediate = true)
@Designate(ocd = ConfigUtilImpl.Config.class)

Thanks. 

Avatar

Community Advisor
 

Hi @sai1007 ,

 

Which Maven Archetype you are using in your project? I am able to include @Reference annotation inside @Component annotation without any issue. I am using 6+ version of OSGI dependencies. Try using below if it resolves your issue-
(Also, I see there is one comma missing after 'bind = "bindAssetDetailsSelector" ' and small 'r' for Reference annotation but I believe those are just typos.)

 
<!-- OSGi Dependencies -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.annotation</artifactId>
<version>6.0.1</version>
<scope>provided</scope>
</dependency>

Avatar

Employee Advisor

I think you have to use @OsgiService annotation instead of @reference