切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError

切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError,第1张

概述在升级到 Android Studio 2.0之前,我可以使用Dagger 2没问题.现在我得到一个NoClassDefFoundError这让我关闭了一天以上,我正在寻求帮助. 似乎Gradle不能用我的AppModule类,即使它很清楚它在我的项目中.我甚至包括set multiDexEnabled true,即使我的项目只有几个文件. 我在网上找到的所有内容都表明您可以单击要导入的库. An 在升级到 Android Studio 2.0之前,我可以使用Dagger 2没问题.现在我得到一个NoClassDefFoundError这让我关闭了一天以上,我正在寻求帮助.

似乎Gradle不能用我的AppModule类,即使它很清楚它在我的项目中.我甚至包括set multIDexEnabled true,即使我的项目只有几个文件.

我在网上找到的所有内容都表明您可以单击要导入的库. AndroID Studio没有这样的奢侈品.

任何帮助将不胜感激,你将获得我不懈的忠诚.

04-21 17:26:54.006 7875-7875/com.androIDtitan.spotscoreapp E/AndroIDRuntime: FATAL EXCEPTION: mainProcess: com.androIDtitan.spotscoreapp,PID: 7875java.lang.NoClassDefFoundError: com.androIDtitan.spotscoreapp.main.injection.AppModule_ProvIDesApplicationFactoryat com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.initialize(DaggerAppComponent.java:31)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.<init>(DaggerAppComponent.java:23)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.<init>(DaggerAppComponent.java:0)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent$Builder.build(DaggerAppComponent.java:66)at com.androIDtitan.spotscoreapp.App.onCreate(App.java:28)at com.androID.tools.fd.runtime.bootstrapApplication.onCreate(bootstrapApplication.java:326)at androID.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020)at androID.app.ActivityThread.handleBindApplication(ActivityThread.java:5010)at androID.app.ActivityThread.access00(ActivityThread.java:172)at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1482)at androID.os.Handler.dispatchMessage(Handler.java:102)at androID.os.Looper.loop(Looper.java:145)at androID.app.ActivityThread.main(ActivityThread.java:5835)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:1399)at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:1194)package com.androIDtitan.spotscoreapp.main.injection;import androID.app.Application;import androID.content.Context;import javax.inject.Singleton;import dagger.Module;import dagger.ProvIDes;

的AppModule

@Modulepublic class AppModule {private static Application application;public AppModule(Application application) {    this.application = application;}@ProvIDes @SingletonApplication provIDesApplication() {    return application;}@ProvIDes @SingletonContext provIDesApplicationContext() {    return application.getBaseContext();}}

AppComponent

package com.androIDtitan.spotscoreapp.main.injection;import androID.app.Application;import androID.content.Context;import com.androIDtitan.spotscoreapp.main.ui.activity.LoginActivity;import com.androIDtitan.spotscoreapp.main.ui.fragment.LoginFragment;import com.androIDtitan.spotscoreapp.main.ui.fragment.SignUpFragment;import javax.inject.Singleton;import dagger.Component;@Singleton@Component(    modules = { AppModule.class,LoginPresenterModule.class })public interface AppComponent {Application getApplication();Context getApplicationContext();voID inject(LoginFragment activity);}

应用扩展了应用

import androID.app.Application;import androID.support.multIDex.MultIDexApplication;import com.androIDtitan.spotscoreapp.main.injection.AppComponent;import com.androIDtitan.spotscoreapp.main.injection.AppModule;import com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent;import com.firebase.clIEnt.Firebase;import timber.log.Timber;public class App extends Application {private static AppComponent appComponent;@OverrIDepublic voID onCreate() {    super.onCreate();    Firebase.setAndroIDContext(this);    appComponent = DaggerAppComponent.builder()            .appModule(new AppModule(this))            .build();    if (BuildConfig.DEBUG) {        Timber.plant(new Timber.DeBUGTree());    }}public static AppComponent getAppComponent(){    return appComponent;}}

的build.gradle(模块:APP)

apply plugin: 'com.androID.application'apply plugin: 'com.neenbedankt.androID-apt'androID {compileSdkVersion 23buildToolsversion "24.0.0 rc1"defaultConfig {    applicationID "com.androIDtitan.spotscoreapp"    minSdkVersion 16    targetSdkVersion 23    versionCode 1    versionname "1.0"    multIDexEnabled true}buildTypes {    release {        MinifyEnabled false        proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro'    }}packagingOptions {    exclude 'meta-inf/DEPENDENCIES.txt'    exclude 'meta-inf/NOTICE'    exclude 'meta-inf/NOTICE.txt'    exclude 'meta-inf/liCENSE'    exclude 'meta-inf/liCENSE.txt'}}dependencIEs {compile filetree(include: ['*.jar'],dir: 'libs')testCompile 'junit:junit:4.12'apt 'com.Google.dagger:dagger-compiler:2.0'compile 'com.androID.support:multIDex:1.0.0'provIDed 'com.Google.dagger:dagger-compiler:2.0'provIDed 'org.glassfish:javax.annotation:10.0-b28'compile 'com.androID.support:appcompat-v7:23.3.0'compile 'com.jakewharton.timber:timber:4.1.2'compile 'com.androID.support:design:23.3.0'compile 'com.jakewharton:butterknife:7.0.1'compile 'com.firebase:firebase-clIEnt-androID:2.3.1'}

的build.gradle(项目:spotscoreapp)

buildscript {repositorIEs {    jcenter()}dependencIEs {    classpath 'com.androID.tools.build:gradle:2.0.0'    classpath 'com.neenbedankt.gradle.plugins:androID-apt:1.4'    // NOTE: Do not place your application dependencIEs here; they belong    // in the indivIDual module build.gradle files}}allprojects {repositorIEs {    jcenter()}}task clean(type: Delete) {delete rootProject.buildDir}

AndroIDManifest

`

<uses-permission androID:name="androID.permission.INTERNET" /><application    androID:name=".App"    androID:allowBackup="true"    androID:icon="@mipmap/ic_launcher"    androID:label="@string/app_name"    androID:supportsRtl="true"    androID:theme="@style/Apptheme" >    <activity        androID:name=".main.ui.activity.LoginActivity"        androID:label="@string/Title_activity_login"        androID:theme="@style/Apptheme.NoActionbar" />    <activity androID:name=".main.ui.activity.MainActivity" >        <intent-filter>            <action androID:name="androID.intent.action.MAIN" />            <category androID:name="androID.intent.category.LAUNCHER" />        </intent-filter>    </activity></application>

`

解决方法 我有一个非常类似的问题,并通过在AndroID Studio中做很常见的事情来解决它.你基本上需要

使缓存无效,然后清理项目

你知道,Dagger2在编译时会生成很多代码,有时会出现问题,特别是如果你使用AndroID Studio 2.0提供的Instant Run

总结

以上是内存溢出为你收集整理的切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError全部内容,希望文章能够帮你解决切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1136692.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存