本文介绍了jReddit和java.lang.NoClassDefFoundError的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写的应用程序在Android中工作室(诉1.1.0)浏览reddit的。我发现API包装jReddit并想使用它。

I would like to write application in Android Studio (v. 1.1.0) to browse reddit. I found API wrapper jReddit and would like to use it.

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

At first I just try to initialize RestClient (method is called when I click on button), but I get error:

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.<init>(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.<init>(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

code与初始化:

Code with initialization:

public void tlacitko(View v)
    {
        RestClient restClient;
        restClient = new PoliteHttpRestClient();//= new HttpRestClient();

        //User user = new User(restClient, "nick", "dasdasd");
    }

库,来编译:

Libs to compile:

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')

我想我有所有需要的库,在那里我可以做的错?

I think I have all needed libs, where can I do mistake?

更新

我再试一次我的项目。我想补充的依赖:

I just try again my project. I add dependency:

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'
}

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

but when I try to run project, I get error:

    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的工作室。我试着Maven的依赖于Eclipse和jreddit工作带来极大的出现。

This error occurs only in Android studio. I tried Maven dependency in Eclipse and jreddit work great there.

推荐答案

我目前的维护者为jReddit项目。

I am the current maintainer for the jReddit project.

我最近创建了一个示例机器人的例子,利用jreddit库。有没有做多的例子,但Android的应用程序将正常工作与它的jreddit罐子。

I recently created a sample android example which makes use of jreddit library. Haven't done much for the example, but the android app would work fine with the jreddit jar in it.

我花了一段时间来理出头绪,但基本上这些都是我用,以使Android应用程序工作的相关性,我认为它应该帮助你为好。

I took me a while to figure things out, but basically these are the dependencies that I've used in order to make the android app work and I think it should help you out as well.

此外,要注意,我张贴这是最新的jReddit版本,其中包括一些变化,帮助Android开发出来的版本(1.0.3)。

Also, pay attention to the version that I posted (1.0.3) which is the latest jReddit release which includes several changes that help android developers out.

应用插件:com.android.application

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'
}

您还可以检出完整的例子这里

You can also checkout the full example here

这篇关于jReddit和java.lang.NoClassDefFoundError的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!