Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android例外:';java.lang.NoClassDefFoundError:javax.jmdns.jmdns';_Java_Android_Jar_Classpath_Jmdns - Fatal编程技术网

Android例外:';java.lang.NoClassDefFoundError:javax.jmdns.jmdns';

Android例外:';java.lang.NoClassDefFoundError:javax.jmdns.jmdns';,java,android,jar,classpath,jmdns,Java,Android,Jar,Classpath,Jmdns,希望我的问题不是太傻,但我有以下问题 我正在将包含库JmDNS的jar导入到我的项目中。我的项目设置为这样处理JmDNS setUp(); try { peer = new PublicPeer("Aidan",6666,6667,this); } catch (IOException e) { // TODO Auto-generated catch block e.printS

希望我的问题不是太傻,但我有以下问题

我正在将包含库
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.multicast锁
PublicPeer

当执行到达
peer=newpublicpeer(“艾丹”,66666 7,本)以下错误输出

 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)
11-13:12:47.644:W/dalvikvm(204):threadid=3:线程以未捕获异常退出(组=0x4001b188)
11-13 13:12:47.644:E/AndroidRuntime(204):未捕获处理程序:线程主线程由于未捕获异常而退出
11-13 13:12:47.664:E/AndroidRuntime(204):java.lang.NoClassDefFoundError:javax.jmdns.jmdns
11-13:12:47.664:E/AndroidRuntime(204):在com.daniel.business.publicchat.PeerAdvertiser.(PeerAdvertiser.java:36)
11-13 13:12:47.664:E/AndroidRuntime(204):在com.daniel.business.publicchat.PublicPeer。(PublicPeer.java:60)
11-13 13:12:47.664:E/AndroidRuntime(204):在com.chatr.org.PublicChat.onCreate(PublicChat.java:21)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.app.ActivityThread.access$2200(ActivityThread.java:119)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
11-13 13:12:47.664:E/AndroidRuntime(204):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-13 13:12:47.664:E/AndroidRuntime(204):在android.os.Looper.loop(Looper.java:123)
11-13 13:12:47.664:E/AndroidRuntime(204):位于android.app.ActivityThread.main(ActivityThread.java:4363)
11-13 13:12:47.664:E/AndroidRuntime(204):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-13 13:12:47.664:E/AndroidRuntime(204):在java.lang.reflect.Method.invoke(Method.java:521)
11-13 13:12:47.664:E/AndroidRuntime(204):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-13 13:12:47.664:E/AndroidRuntime(204):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-13 13:12:47.664:E/AndroidRuntime(204):在dalvik.system.NativeStart.main(本机方法)
如果我对以上内容的理解是正确的,那么在找到我的JmDNS库时就会出现问题,但是,它正在被添加。我百分之百肯定。我正在导入的JAR的代码可以在这里找到:

编辑


正如本文所述,将JmDNS添加到Android中似乎存在一个问题:我尝试按照该指南“重新jaring”JmDNS JAR文件,但仍然存在同样的问题。它似乎不能很好地使用它。

这可能是因为类尚未加载。 类clazz=getClassLoader().loadClass(“javax.jmdns.jmdns”);
然后使用反射来创建clazz类型的对象实例,我认为JmDNS开发人员在发布/维护他们的版本时可能会遇到一些问题,更糟糕的是,文档记录得很差,您可以从两者下载jar,但是,您可以看到同一版本(最新版本为3.4.1)的jar文件是不同的,Maven central repository的版本更干净,这可能是Heeere在他的页面中谈到的rejaring。我总是使用Maven构建我的Android应用程序,因此从未尝试过SourceForge中的应用程序,然而,从Maven下载的jar文件对我来说很有用

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


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

我假设您将.jar添加到Eclipse中的构建路径中?您的理解是错误的。搜索“NoClassDefFoundError”。@Kerubu是的,我是。正在将包含jmDNS jar的jar添加到类路径中。我还尝试自己制作JAR并将其添加到带有jmDNS JAR的类路径中,我尝试从正在添加的JAR中删除jmDNS JAR并手动添加它,但这会引发一个错误,声称JAR(jmDNS one)被添加了两次。NoClassDefFoundError并不意味着无法找到命名的.class文件。这意味着,由于某种原因,在找到.class文件后无法“加载”该类。对于“罐装”jar文件中的内容,这通常是因为缺少依赖项或jar文件之间存在版本冲突。(一个问题可能是将jar添加到javax路径。我不熟悉Android可能具有的限制,但常规Java需要一些路径(不记得javax是否是一个)只能作为“引导类路径”的一部分加载。)刚刚尝试了这个,它似乎在单独运行时可以工作,但在我正在实现的库中却不能。。陛下有趣..什么是错误?我也在我的库项目中使用它,没有任何问题。@Aidanc,给maven assembly插件的“单一”目标一个机会。。这样您就可以更加确定每个类都在类路径中(因为您只有一个jar文件)