希望我的问题不是很傻,但是我遇到了以下问题...

我正在将包含JmDNS库的jar导入到我的项目中。我的项目设置为像这样处理JmDNS ...

      setUp();
        try {
            peer = new PublicPeer("Aidan",6666,6667,this);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

     private void setUp(){
        android.net.wifi.WifiManager wifi =
               (android.net.wifi.WifiManager)
                  getSystemService(android.content.Context.WIFI_SERVICE);
        lock = wifi.createMulticastLock("Lock");
            lock.setReferenceCounted(true);
            lock.acquire();
       }

其中lock = android.net.wifi.WifiManager.MulticastLock lock;PublicPeer peer;
当执行达到peer = new PublicPeer("Aidan",6666,6667,this);时,以下错误输出...
 11-13 13:12:47.644: W/dalvikvm(204): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
 11-13 13:12:47.644: E/AndroidRuntime(204): Uncaught handler: thread main exiting due to uncaught exception
 11-13 13:12:47.664: E/AndroidRuntime(204): java.lang.NoClassDefFoundError: javax.jmdns.JmDNS
 11-13 13:12:47.664: E/AndroidRuntime(204):     at com.daniel.business.publicchat.PeerAdvertiser.<init>(PeerAdvertiser.java:36)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at com.daniel.business.publicchat.PublicPeer.<init>(PublicPeer.java:60)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at com.chatr.org.PublicChat.onCreate(PublicChat.java:21)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.os.Handler.dispatchMessage(Handler.java:99)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.os.Looper.loop(Looper.java:123)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at android.app.ActivityThread.main(ActivityThread.java:4363)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at java.lang.reflect.Method.invokeNative(Native Method)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at java.lang.reflect.Method.invoke(Method.java:521)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 11-13 13:12:47.664: E/AndroidRuntime(204):     at dalvik.system.NativeStart.main(Native Method)

如果我对上述内容的理解是正确的,但是在我的JmDNS库中存在问题,因此正在添加它。我对此有100%的把握。我要导入的JAR的代码可以在这里找到:https://github.com/Ps2Fino/DSProject-Backend

编辑

如此处所述,将JmDNS添加到Android似乎是一个问题:http://home.heeere.com/tech-androidjmdns.html我尝试按照该指南“重新打包” JmDNS JAR文件,但仍然遇到同样的问题。它似乎不能很好地工作。

最佳答案

我认为JmDNS开发人员可能会在发布/维护其发行版方面遇到一些问题,甚至更糟糕的是,有据可查,您可以从SourceForge home pageMaven central repo下载jar,但是,您可以看到同一发行版的jar文件(最新版本是3.4.1)有所不同,Maven中央存储库中的一个更干净,这可能就是Heeere在其页面上谈论的关于重新命名的内容。我一直使用Maven构建我的Android应用程序,因此从未尝试过从SourceForge那里下载一个,但是,从Maven下载的jar文件对我有用。

关于java - Android异常:“java.lang.NoClassDefFoundError:javax.jmdns.JmDNS”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8111827/

10-09 00:00