如何使用类名命名我的OSGi组件?

时间:2014-10-21 08:58:12

标签: java osgi

我的项目使用约定来使用class.getName()作为OSGi容器的名称。大多数现有组件都有一个public static final String常量,其中包含如下名称:

package mypackage;
@Component(name = MyClass.COMPONENT_NAME)
public class MyClass {
    public static final String COMPONENT_NAME = "mypackage" + ".MyClass";
    ...
}

在项目中创建我的第一个组件时,我尝试了这个:

package mypackage;
@Component(name = MyClass.COMPONENT_NAME)
public class MyClass {
    public static final String COMPONENT_NAME = MyClass.class.getName();
    ...
}

但是,编译器在注释中抱怨name应该是常量。

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

在你的情况下是方法调用,它将在初始化类时执行(在运行时)。 价值

  

MyClass.class.getName()

编译时不知道

方法调用。这是抱怨的原因。