这里是源代码org.osgi.service.log.LoggerFactory
。
如您所见,它是一个没有静态方法的接口,因此代码如下:
Logger log = LoggerFactory.getLogger(this.getClass());
根本无效。
将此slf4j
用作前端修复(这意味着将org.osgi.service.log.LoggerFactory
导入替换为org.slf4j.LoggerFactory
等)。
更新
如果您想坚持,请org.osgi.service.log.LoggerFactory
按照以下步骤操作:
获取 LoggerFactory 实例:
public class Activator implements BundleActivator
{
private volatile LoggerFactory loggerFactory;
public void start(BundleContext context) throws Exception
{
ServiceReference ref = context.getServiceReference(LoggerFactory.class.getName());
if (ref != null)
{
loggerFactory = (LoggerFactory) context.getService(ref);
}
}
//..
然后,您可以在包中的其他地方使用 LoggerFactory 为任何类获取 Logger:
Logger logger = loggerFactory.getLogger(Foo.class);
更新2
更好的选择是获取服务类型为 LoggerFactory 的参考,如下所示:
@Reference(service = LoggerFactory.class)
private Logger logger;