2017-02-13 2 views
0

Я только начал изучать OSGi. я написал HelloWorld расслоение:OSGi: org.osgi.framework.BundleExceptiom: Невозможно разрешить [16] (R 16.0)

public class HelloWorld { 
    public interface SayHello 
    { 
     void greeting(); 
    } 

    public static class Greeting implements SayHello { 
     @Override 
     public void greeting(){ 
      System.out.println("Hello OSGi world!"); 
     } 
    } 

    public static void main(String[] args) { 

    } 
} 

И HelloWorldActivator расслоение:

import org.osgi.framework.BundleActivator; 
import org.osgi.framework.BundleContext; 

public class HelloWorldActivator implements BundleActivator { 
    public void start(BundleContext ctx){ 
     ServiceReference ref = ctx.getServiceReference(HelloWorld.Greeting.class.getName()); 
    ((HelloWorld.Greeting)ctx.getService(ref)).greeting(); 
    } 
    public void stop(BundleContext ctx){ 
     System.out.println("HelloWorld bundle has been stoped"); 
    } 
} 

HelloWorldActivator.mf:.

main-class: HelloWorldActivator 
bundle-name: HelloWorldActivator 
import-package: HelloWorld 

загрузив его на Apache Felix (версия 5.6.1): screen И когда я пытаюсь запустить активатор, я получаю сообщение об ошибке: screen

ответ

1

Для вашего пакета нет пакета с именем HelloWorld. Поэтому он не может решить. У вас есть класс с именем HelloWorld, но (1) Я предполагаю, что класс находится в вашем пакете, и (2) класс не является пакетом.

Ваш манифест не является полезным проявлением для пакета OSGi. Main-Class не имеет смысла для рамки OSGi. Ваш пакет настолько прост, что только Import-Package пакет org.osgi.framework должен иметь доступ к типам BundleActivator и BundleContext. И поскольку у вас есть активатор связки, вам нужно указать полное имя класса, используя заголовок Bundle-Activator.

Я бы предложил проверить сайт OSGi enRoute для учебных пособий.

+0

Собственно, если вы посмотрите на его первый снимок экрана, есть два пучка. Тот, который содержит HelloWorld, другой содержит активатор. Не знаю, почему это было сделано. –

+0

Спасибо, я обязательно проверю этот учебник. 2 пакета, потому что я хочу, чтобы один пучок использовал методы из другого. – DnyashA

Смежные вопросы