jReddit和Java.lang.NoClassDefFoundError错误

我想在Android Studio(v.1.1.0)中编写应用程序来浏览reddit。 我找到了API包装器jReddit并想使用它。

起初我只是尝试初始化RestClient(当我点击按钮时调用方法),但是我收到错误:

528-1528/com.example.sk1x1.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.sk1x1.myapplication, PID: 1528 java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:4007) at android.view.View.performClick(View.java:4756) at android.view.View$PerformClick.run(View.java:19749) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at android.view.View$1.onClick(View.java:4002)             at android.view.View.performClick(View.java:4756)             at android.view.View$PerformClick.run(View.java:19749)             at android.os.Handler.handleCallback(Handler.java:739)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/util/Args; at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:58) at org.apache.http.conn.util.PublicSuffixMatcherLoader.getDefault(PublicSuffixMatcherLoader.java:87) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:884) at com.github.jreddit.utils.restclient.HttpRestClient.(HttpRestClient.java:66) at com.example.sk1x1.myapplication.MainActivity.tlacitko(MainActivity.java:49)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at android.view.View$1.onClick(View.java:4002)             at android.view.View.performClick(View.java:4756)             at android.view.View$PerformClick.run(View.java:19749)             at android.os.Handler.handleCallback(Handler.java:739)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.util.Args" on path: DexPathList[[zip file "/data/app/com.example.sk1x1.myapplication-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469)             at org.apache.http.conn.util.PublicSuffixMatcherLoader.load(PublicSuffixMatcherLoader.java:58)             at org.apache.http.conn.util.PublicSuffixMatcherLoader.getDefault(PublicSuffixMatcherLoader.java:87)             at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:884)             at com.github.jreddit.utils.restclient.HttpRestClient.(HttpRestClient.java:66)             at com.example.sk1x1.myapplication.MainActivity.tlacitko(MainActivity.java:49)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at android.view.View$1.onClick(View.java:4002)             at android.view.View.performClick(View.java:4756)             at android.view.View$PerformClick.run(View.java:19749)             at android.os.Handler.handleCallback(Handler.java:739)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Suppressed: java.lang.ClassNotFoundException: org.apache.http.util.Args at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 19 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

初始化代码:

 public void tlacitko(View v) { RestClient restClient; restClient = new PoliteHttpRestClient();//= new HttpRestClient(); //User user = new User(restClient, "nick", "dasdasd"); } 

Libs编译:

 compile 'com.android.support:appcompat-v7:21.0.3' compile files('libs/jreddit-1.0.2.jar') compile files('libs/httpclient-4.4.jar') compile files('libs/jna-4.1.0.jar') compile files('libs/jna-platform-4.1.0.jar') compile files('libs/commons-io-2.4.jar') 

我想我都需要libs,哪里可以搞错?

UPDATE

我再试一次我的项目。 我添加依赖:

 dependencies { //compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile('com.github.jreddit:jreddit:1.0.3') { exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude module: 'junit' } compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1' } 

但是当我尝试运行项目时,我收到错误:

  Error:duplicate files during packaging of APK D:\ZCU\AndroidStudioProjects\JredditTest\app\build\outputs\apk\app-debug-unaligned.apk Path in archive: META-INF/DEPENDENCIES Origin 1: C:\Users\Sk1X1\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpmime\4.3.5\1dd0d38df9c6d21e893f2e52403f1cd99e91cd81\httpmime-4.3.5.jar Origin 2: C:\Users\Sk1X1\.gradle\caches\modules-2\files-2.1\org.apache.maven\maven-repository-metadata\3.0\e3c41f7565b1e189ff7a312796b9d2c470c09a8b\maven-repository-metadata-3.0.jar You can ignore those files in your build.gradle: android { packagingOptions { exclude 'META-INF/DEPENDENCIES' } } Error:Execution failed for task ':app:packageDebug'. > Duplicate files copied in APK META-INF/DEPENDENCIES File 1: C:\Users\Sk1X1\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpmime\4.3.5\1dd0d38df9c6d21e893f2e52403f1cd99e91cd81\httpmime-4.3.5.jar File 2: C:\Users\Sk1X1\.gradle\caches\modules-2\files-2.1\org.apache.maven\maven-repository-metadata\3.0\e3c41f7565b1e189ff7a312796b9d2c470c09a8b\maven-repository-metadata-3.0.jar 

此错误仅在Android Studio中发生。 我在Eclipse中尝试了Maven依赖,jreddit在那里工作得很好。

我是jReddit项目的当前维护者。

我最近创建了一个使用jreddit库的示例android示例。 没有为这个例子做太多,但Android应用程序可以正常使用jreddit jar。

我花了一些时间来解决问题,但基本上这些是我用来使Android应用程序工作的依赖项,我认为它也应该帮助你。

另外,请注意我发布的版本(1.0.3),这是最新的jReddit版本,其中包含一些有助于Android开发人员的更改。

apply plugin:’com.android.application’

 android { compileSdkVersion 21 buildToolsVersion "22.0.1" defaultConfig { applicationId "jreddit.github.com.jredditsampleproject" minSdkVersion 19 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_6 targetCompatibility JavaVersion.VERSION_1_6 } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' exclude 'META-INF/plexus/components.xml' } } dependencies { compile('com.github.jreddit:jreddit:1.0.3') { exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude module: 'junit' } compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1' compile 'com.android.support:appcompat-v7:22.0.0' } 

您也可以在此处查看完整示例