首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调查JmDNS3.4.1 jar时出现问题

调查JmDNS3.4.1 jar时出现问题
EN

Stack Overflow用户
提问于 2011-08-30 23:18:06
回答 1查看 303关注 0票数 0

我是新手。我正在使用osgi bundle和JmDNS处理我的第一个程序。在将JmDNS 3.4.1 jar添加到我的项目中之后,我正在测试以下基本代码:

我的Activator:

代码语言:javascript
复制
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");
}
}

这里是捆绑包:

代码语言:javascript
复制
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());
       }
   }    
  }

当我运行代码时,我得到:

代码语言:javascript
复制
osgi> Launching
step 1

然后它停止了,所以我猜在创建JmDNS实例时有一个问题。有什么想法吗?

请注意,如果我没有使用带有激活器的包(带有main的简单程序),一切都会正常工作

代码语言:javascript
复制
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();
    }
}
}

附言:我在Windows上运行它

EN

回答 1

Stack Overflow用户

发布于 2012-06-22 20:30:26

您必须将导入的库添加到OSGI Framework的MANIFEST.MF文件的类路径中。

Bundle-ClassPath: org.json.jar, lib/jmdns-3.4.1.jar, ...

如果您从sourceforge获得了库,请检查jar文件是否正确,以及jar中是否有两次出现的类。(如果是这样,只需使用Maven中的.jar )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7245548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档