![](/img/trans.png)
[英]Exception in thread “main” java.lang.NoClassDefFoundError:javax/persistence/Cacheable
[英]Android Exception: 'java.lang.NoClassDefFoundError: javax.jmdns.JmDNS'
希望我的问题不是太傻,但我有以下问题......
我正在将包含库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库就会出现问题,但它正在被添加。 我百分百肯定。 我导入的JAR代码可以在这里找到: https : //github.com/Ps2Fino/DSProject-Backend
编辑
JmDNS被添加到Android中似乎是一个问题,如下所示: http ://home.heeere.com/tech-androidjmdns.html我试图按照该指南“重新评判”JmDNS JAR文件,但我我还有同样的问题。 它看起来效果不佳。
我认为JmDNS开发人员可能在发布/维护他们的版本方面存在一些问题,更糟糕的是文档很差,你可以从SourceForge主页和Maven central repo下载jar,但是,你可以看到同一版本的jar文件(最新版本是3.4.1)是不同的,来自Maven中央存储库的一个更干净,这可能是Heeere在他的页面中谈到的关于rejaring的内容。 我总是使用Maven构建我的Android应用程序,所以从来没有尝试过来自SourceForge的那个,但是,从Maven下载的jar文件适合我。
由于尚未加载类,因此可能会发生这种情况。 class clazz = getClassLoader()。loadClass(“javax.jmdns.JmDNS”); 然后使用反射创建clazz类型的对象实例
添加jar文件的一种方法是从JmDNS.jar文件中获取源代码并将其直接添加到项目中。 我遇到了类似于你的问题,我无法让我的Android应用程序正确使用SourceForge或Maven中的JmDNS.jar文件。 我刚刚从jar文件中获取了所有源文件,将它们添加到我的Eclipse项目中,构建它,它就像一个魅力。
我不知道这是否是您想要使用的长期解决方案,但此解决方案对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.