OSGI EventAdmin не может отправить событие - получение исключения с нулевой точкой на Producer

Я пытаюсь отправить событие потребителю. Я получаю исключение NullPointerException

Вот мой код события

public class Activator implements BundleActivator {

    EventAdmin eventAdmin;
    @Override
    public void start(BundleContext bundleContext) throws Exception {
        System.out.println("started");
        Dictionary<String, String> properties = new Hashtable<>();
        properties.put("test", "blah");
        Event event = new Event("test/sent", properties);
        System.out.println("sending");
        eventAdmin.sendEvent(event);
    }

    @Override
    public void stop(BundleContext bundleContext) throws Exception {
        System.out.println("stopped ");
    }
} 

Вот ЛОГ

Вы используете поле eventAdmin, которое никогда не устанавливается. Таким образом, вы получаете исключение NullPointerException. Вместо этого я предлагаю использовать декларативные сервисы и внедрить EventAdmin с помощью @Reference.


person TheTechGuy    schedule 26.08.2019    source источник


Ответы (1)


См. Администрирование событий OSGi — публикация и подписка от Vogella за всеми подробностями.

org.osgi.framework.BundleException: исключение в com.aml.project.Activator.start() пакета h. в org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:863) в org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791) в org.eclipse.osgi.internal .framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013) в org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365) в org.eclipse.osgi.container.Module.doStart(Module .java:598) в org.eclipse.osgi.container.Module.start(Module.java:462) в org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:439) в org.apache. felix.gogo.command.Basic.start(Basic.java:739) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl .java:62) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:567) на org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:139) на org.apache.felix.gogo. runtime.CommandProxy.execute(CommandProxy.java:91) в org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599) в org.apache.felix.gogo.runtime.Closure.executeStatement(Closure. java:526) в org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415) в org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416) в org.apache .felix.gogo.runtime.Pipe.call(Pipe.java:229) в org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) в java.base/java.util.concurrent.FutureTask .run(FutureTask.java:264) в java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) в java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java :628) в java.base/java.lang.Thread.run(Thread.java:835) Причина: java.lang.NullPointerExce вариант в com.aml.project.Activator.start(Activator.java:21) в org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842) в org.eclipse.osgi.internal.framework .BundleContextImpl$3.run(BundleContextImpl.java:1) в java.base/java.security.AccessController.doPrivileged(AccessController.java:552) в org.eclipse.osgi.internal.framework. BundleContextImpl.startActivator(BundleContextImpl.java:834) ... еще 23 java.lang.NullPointerException

person Christian Schneider    schedule 27.08.2019