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

标签 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 应该是一个常量。

为什么这不起作用?

最佳答案

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

MyClass.class.getName()

方法调用在编译时是未知的。这就是提示的原因。

关于java - 如何使用类名来命名我的 OSGi 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482715/

相关文章:

java - launch4j Hello World 程序

Java 8 Streams - 按父属性分组

rest - Jackson( Jersey )反序列化异常 - (对于 id 类型 'Id.class' ): no such class found

java - OSGI - 通过服务 ID 查找 bundle 引用

java - JUnit 测试 - 进行测试的最佳且最可靠的方法?

java - 类未找到异常 :KahaPersistenceAdapter in ACtiveMQ 5. 8

java - 合并的 JPA 异常

java - Bundlor 无法与 Java 8 lambda 正常工作

java - 代码在 Eclipse 中编译但不通过命令提示符编译

java - 在 Apache Karaf 上的 OSGi 包中设置 Spring AOP 日志记录