2015-05-14 5 views
2

Я пытаюсь написать XMPP Clint, используя smack 4.1.1. Я добавил файлы smack jar в путь сборки. Я использую eclipse IDE для написания кода.Java XMPP clint with smack 4.1 NoClassDefFoundError:

Однако, когда я пытаюсь запустить приложение, я получаю NoClassDefFoundErrors. Я исправил некоторые из этих ошибок, добавляя файлы xpp3, jxmpp и minidns jar в путь сборки. Тем не менее, я получаю следующую ошибку.

Exception in thread "main" java.lang.NoClassDefFoundError: org/jxmpp/util/cache/ExpirationCache 
at org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver.<clinit>(MiniDnsResolver.java:46) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:274) 
at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:213) 
at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193) 
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163) 
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148) 
at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116) 
at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96) 
at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38) 
at JabberSmackAPI.login(JabberSmackAPI.java:29) 
at JabberSmackAPI.main(JabberSmackAPI.java:76) 
Caused by: java.lang.ClassNotFoundException: org.jxmpp.util.cache.ExpirationCache 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 12 more 

Как исправить эту проблему?

В Интернете рекомендуется использовать град или maven для их построения. Если да, можете ли вы помочь мне, как использовать то же самое? Я никогда не использовал их раньше.

+0

Вы можете решить проблему еще ??? – Dev

+0

Да, я мог. Благодарю. – saikat

ответ

2

Согласно ниже трассировки стека

Caused by: java.lang.ClassNotFoundException: org.jxmpp.util.cache.ExpirationCache 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 

Казалось У вас не хватает jxmpp-Util-кэш-0.5.0-alpha2.jar в своем классе пути. Download и добавьте эту банку в свой каталог lib/ вашего приложения.

In the internet, it is advised to use gradle or maven for building the same. If so, can you help me how to use the same?

Создать meven проект в затмении .Если вы новичок в meven проекта относятся

How to create a Java project with Maven

И добавить ниже зависимостей в pom.xml вашего meven сборки проекта

<dependency> 
    <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-java7</artifactId> 
     <version>4.1.0</version> 
</dependency> 
<dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-tcp</artifactId> 
     <version>4.1.0</version> 
</dependency> 
<dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-im</artifactId> 
     <version>4.1.0</version> 
</dependency> 
<dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-extensions</artifactId> 
     <version>4.1.0</version> 
</dependency> 

Для более подробно см. это link

Надеюсь, это поможет вам !!!!

Спасибо !!!

Смежные вопросы