2016-11-24 103 views
0

我正在尝试使用boilerpipe来获取文本文章,如口袋应用程序。应用程序编译正确,但给运行时异常:Android Studio:来自boilerpipe的java.lang.NoClassDefFoundError

java.lang.RuntimeException: An error occurred while executing doInBackground() 
    at android.os.AsyncTask$3.done(AsyncTask.java:309) 
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run(Thread.java:818) 
    Caused by: java.lang.NoClassDefFoundError: de.l3s.boilerpipe.sax.BoilerpipeHTMLParser 
    at de.l3s.boilerpipe.sax.BoilerpipeSAXInput.getTextDocument(BoilerpipeSAXInput.java:51) 
    at de.l3s.boilerpipe.extractors.ExtractorBase.getText(ExtractorBase.java:69) 
    at de.l3s.boilerpipe.extractors.ExtractorBase.getText(ExtractorBase.java:87) 
    at com.example.pushpankar.fastreader.ReadView$fetchUrlTxt.doInBackground(ReadView.java:154) 
    at com.example.pushpankar.fastreader.ReadView$fetchUrlTxt.doInBackground(ReadView.java:147) 
    at android.os.AsyncTask$2.call(AsyncTask.java:295) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
    at java.lang.Thread.run(Thread.java:818)  

以下是我已经尝试过的事情:

  1. 清理并生成项目
  2. gradlew干净
  3. 通过不同的方法
  4. 添加库

我看到相同的bug已发布在github上。

这里是我的build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 
    defaultConfig { 
     applicationId "com.example.pushpankar.fastreader" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
}) 
    compile project(':boilerpipe-1.2.0-android') 
    compile project(':xerces-for-android') 
    compile project(':nekohtml') 
    compile 'com.android.support:appcompat-v7:25.0.1' 
    compile 'com.android.support:support-v4:25.0.1' 
    testCompile 'junit:junit:4.12' 
    compile files('libs/slf4j-android-1.6.1-RC1.jar') 
} 
+0

[Android的Java库中的代码的NoClassDefFoundError可能重复](http://stackoverflow.com/questions/8678630/noclassdeffounderror-for-code-in-an-java-library-on-android) – sushildlh

+0

I对android工作室有类似的方法,但它没有工作。 – user3125971

回答

0

看来你使用的是一些混淆,它重命名为其他字符,这给错误?

+0

我不认为我使用任何“混淆器”。我第一次听说这个词。 – user3125971

+0

obfuscator用于缩小android例子proguard中的代码/资源,你能确认BoilerpipeHTMLParser是否在正确的pakage中? – SaravInfern

+0

是BoilerpipeHTMLParser在包中。 – user3125971

相关问题