安卓工作室 E/dalvikvm: 无法找到类“。DatabaseHelper”,被引用自方法“。DatabaseManager”。

9

你好,我在使用Android Studio运行时遇到了这个错误,但只有在SDK版本小于等于19的设备上。所有内容编译正常,但在我的databaseHelper类中出现了此错误。

java.lang.NoClassDefFoundError:

这是我的应用程序 build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'
    useLibrary  'org.apache.http.legacy'

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
        }
    }
}



dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.android.gms:play-services:7.8.0'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.github.johnpersano:supertoasts:1.3.4@aar'
    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
    compile 'com.navercorp.pulltorefresh:library:3.2.0@aar'
    compile 'com.parse.bolts:bolts-android:1.2.1'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'com.j256.ormlite:ormlite-core:4.48'
}

我的数据库助手类扩展了OrmLiteSqliteOpenHelper。在我的compileSdkVersion为19时,一切都运行良好。以下是我进行的更新:
  • gradle:classpath 'com.android.tools.build:gradle:1.1.0' > 1.3.0
  • sdk版本:compileSdkVersion 19 > 23
  • appcompat:com.android.support:appcompat-v7:19.0.1 > 23
  • play-services
我的databaseHelper类与其他正常工作的类位于同一个包中!感谢您的帮助。

我有同样的问题。我仍在努力找出是什么原因导致它。 - Gatunox
顺便提一下,我注意到每次我创建匿名类的地方都会在logcat中出现E/dalvikvm: Could not find class错误。如果你移除匿名类的创建,它似乎可以工作。但奇怪的是,这曾经可以工作,并且在API大于19的情况下仍然可以工作。 - Gatunox
1
有人解决了这个问题吗?我也遇到了同样的问题。 - Cristian
3个回答

11

因为你在build.gradle中设置了multiDexEnabled true,所以请确保你的应用程序类继承自MultiDexApplication而不是Application类。

或者,如文档中建议的那样,在你的应用程序类中添加以下方法。

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

1
谢谢,这对我很有帮助。我将Application更改为MultiDexApplication。 - ch3tanz

1
我已经找到了问题所在。在Lollypop之前,multiDex支持不正确。一旦我删除了额外的库并在Gradle中删除了multidex设置,一切就开始正常工作了。
删除。
 multiDexEnabled true 

致敬


0

我之前也遇到过同样的问题,尝试关闭ProGuard

minifyEnabled false

1
谢谢,但是还是没有改变 ;( - totteire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接