Проблема с исследованием JmDNS3.4.1 jar

Я новичок здесь. Я имею дело со своей первой программой, использующей пакеты osgi и JmDNS. После добавления jar JmDNS 3.4.1 в мой проект я тестирую следующий базовый код:

Мой активатор:

package test.discoverservice;

import java.io.IOException;
import test.DiscoverServices;

import javax.jmdns.JmDNS;
import javax.jmdns.ServiceTypeListener;

import org.equinoxosgi.jmdns.dev.discoverservice.DiscoverServices.SampleListener;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class JmdnsActivator implements BundleActivator {

public void start(BundleContext context) throws Exception {
    System.out.println("Launching");
    try {
            System.out.println("step 1");
                final JmDNS jmdns = JmDNS.create();
        System.out.println("step 2");
                jmdns.addServiceListener("_http._tcp.local.", new SampleListener());              
               // jmdns.close();
               // System.out.println("Done");
             } catch (IOException e) {
                 e.printStackTrace();
             }  
}

public void stop(BundleContext context) throws Exception {
    System.out.println("Terminating");
}
}

а вот и комплект:

package test.discoverservice;

import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceListener;


public class DiscoverServices {

   static class SampleListener implements ServiceListener {
       @Override
       public void serviceAdded(ServiceEvent event) {
           System.out.println("Service added   : " + event.getName() + "." +   event.getType());
        }

       @Override
       public void serviceRemoved(ServiceEvent event) {
           System.out.println("Service removed : " + event.getName() + "." + event.getType());
       }

       @Override
       public void serviceResolved(ServiceEvent event) {
           System.out.println("Service resolved: " + event.getInfo());
       }
   }    
  }

когда я запускаю код, я получаю:

osgi> Launching
step 1

а затем он останавливается, так что я предполагаю, что возникла проблема с созданием экземпляра JmDNS. Любая идея, пожалуйста?

Обратите внимание, что если я не использую связку с активатором (простая программа с основным) все работает правильно

import java.io.IOException;
import javax.jmdns.JmDNS;
import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceTypeListener;
public class DiscoverServiceTypes {
    static class SampleListener implements ServiceTypeListener {
    @Override
    public void serviceTypeAdded(ServiceEvent event) {
        System.out.println("Service type added: " + event.getType());
    }
    public void subTypeForServiceTypeAdded(ServiceEvent event) {
        System.out.println("SubType for service type added: " + event.getType());
    }
}


public static void main(String[] args) {
    try {
        JmDNS jmdns = JmDNS.create();
        System.out.println("JmDNS created !!");
        jmdns.addServiceTypeListener(new SampleListener());
       // jmdns.close();
       // System.out.println("Done");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

PS: я запускаю его в Windows


person maro    schedule 30.08.2011    source источник
comment
Несколько предложений. Если вы еще не пробовали, выполните код с помощью отладчика. Из документации вы, вероятно, должны использовать метод create(final InetAddress addr, final String name), а не create(). Кроме того, поскольку вы не можете быть уверены в том, когда потоки будут очищены, удалите блок while ((b = System.in.read()) != -1 && (char) b != 'q'){}.   -  person earcam    schedule 30.08.2011
comment
Ошибок нет, предупреждений нет, просто инструкция create() игнорируется.. не знаю почему   -  person maro    schedule 31.08.2011


Ответы (1)


Вы должны добавить импортированную библиотеку в classpath файла MANIFEST.MF OSGI Framework, если это еще не сделано.
Bundle-ClassPath: org.json.jar, lib/jmdns-3.4.1.jar, ...

Если вы получили библиотеку от sourceforge, проверьте правильность файла jar и отсутствие класса в jar дважды. (Если это так, просто используйте .jar из Maven)

person RaphMclee    schedule 22.06.2012