3

希望我的问题不是太愚蠢,但我遇到了以下问题......

我正在将一个包含该库的 jar 导入JmDNS到我的项目中。我的项目设置为像这样处理 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 库中存在问题,它正在被添加。我百分百确定。我正在导入的 JAR 的代码可以在这里找到:https ://github.com/Ps2Fino/DSProject-Backend

编辑

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

4

3 回答 3

3

我认为 JmDNS 开发人员可能在发布/维护他们的版本方面存在一些问题,更糟糕的是记录不充分,您可以从SourceForge 主页Maven 中央仓库下载 jar ,但是,您可以看到同一版本的 jar 文件(最新版本是 3.4.1)不同,来自 Maven 中央存储库的那个更干净,可能这就是 Heeere 在他的页面中谈到的 rejaring。我总是使用 Maven 构建我的 Android 应用程序,因此从未尝试过 SourceForge 的应用程序,但是,从 Maven 下载的 jar 文件对我有用。

于 2011-11-15T20:15:23.917 回答
1

这可能是由于尚未加载类而发生的。类 clazz = getClassLoader().loadClass("javax.jmdns.JmDNS"); 然后使用反射创建 clazz 类型的对象的实例

于 2011-11-13T13:29:51.837 回答
0

添加 jar 文件的一种方法是从 JmDNS.jar 文件中获取源代码并将其直接添加到您的项目中。我遇到了与您类似的问题,我无法让我的 Android 应用程序正确使用 SourceForge 或 Maven 的 JmDNS.jar 文件。我只是从 jar 文件中获取所有源文件,将它们添加到我的 Eclipse 项目中,构建它,它就像一个魅力。

我不知道这是否是您想要使用的长期解决方案,但该解决方案对我有用。

于 2012-04-02T19:51:16.640 回答