当前位置: 首页 > 知识库问答 >
问题:

Android studio dalvik虚拟机无法找到类

单于骁
2023-03-14

我正试图找出如何修复一个遗留的android项目的错误,我已经移植到android studio。我希望这更多的是我的构建问题。gradle脚本。类库在编码时工作正常,包括完成等。

我尝试过关闭Android Studio,运行gradlew clean,然后在Android Studio中重新打开它,但这不起作用。

这是我的settings.gradle脚本。

include ':app', ':imageloader-core-1.6.1'

这是我的项目构建。格雷德尔剧本。

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.1'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

这是我的应用程序 build.gradle 脚本。

apply plugin: 'com.android.application'
apply plugin: 'jp.leafytree.android-scala'

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.andre.andredublin"
        minSdkVersion 14
        targetSdkVersion 19
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    sourceSets {
        main {
            scala {
                srcDir 'src'
            }
        }
    }

    dexOptions {
        preDexLibraries false
        javaMaxHeapSize "2g"
    }
}

dependencies {
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    compile 'com.android.support:multidex:1.0.0'
    compile 'org.scala-lang:scala-library:2.11.4'
    compile 'io.spray:spray-json_2.11:1.3.1'
    compile 'org.scaloid:scaloid_2.11:3.6.1-10'
    compile 'com.loopj.android:android-async-http:1.4.4'
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'net.hockeyapp.android:HockeySDK:3.5.0'
    compile project(':imageloader-core-1.6.1')
}

afterEvaluate {
    tasks.matching {
        it.name.startsWith("dex")
    }.each { dx ->
        if (dx.additionalParameters == null) {
            dx.additionalParameters = []
        }
        dx.additionalParameters += "--multi-dex"
        dx.additionalParameters += "--main-dex-list=$rootDir/main-dex-list.txt".toString()
    }
}

这是我在genymotion中运行时从日志中收到的错误。

01-17 03:18:07.291    1118-1118/? E/dalvikvm﹕ Could not find class 'com.novoda.imageloader.core.LoaderSettings$SettingsBuilder', referenced from method com.andre.andredublin.MyApplication.onCreate
01-17 03:18:07.291    1118-1118/? W/dalvikvm﹕ VFY: unable to resolve new-instance 751 (Lcom/novoda/imageloader/core/LoaderSettings$SettingsBuilder;) in Lcom/andre/andredublin/MyApplication;
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0005
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x1244 at 0x0a in Lcom/andre/andredublin/MyApplication;.onCreate
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x1242 at 0x1f in Lcom/andre/andredublin/MyApplication;.onCreate
01-17 03:18:07.291    1118-1118/? D/AndroidRuntime﹕ Shutting down VM
01-17 03:18:07.291    1118-1118/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4bd6648)
01-17 03:18:07.295      377-393/system_process D/﹕ HostConnection::get() New Host Connection established 0xb939d6a0, tid 393
01-17 03:18:07.295    1118-1118/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.novoda.imageloader.core.LoaderSettings$SettingsBuilder
            at com.andre.andredublin.MyApplication.onCreate(MyApplication.java:40)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4444)
            at android.app.ActivityThread.access$1300(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

共有3个答案

卢晟
2023-03-14

这是我的解决方案

"multiDexEnabled true" 
compile 'com.android.support:multidex:1.0.1'
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

穿着你的application.java

孔乐邦
2023-03-14

转换为评论回复。

您是否忘记引用任何JAR文件?库项目 imageloader-core-1.6.1 是否报告任何错误(任何带有红色下划线的错误)?构建后出现相同的错误 -

有时也有助于Gradle line编译文件(PATH_TO_JAR_FILE),但据我所知,这在所有较新的Android Studios中都得到了修复。您使用哪个AS版本?

魏翔
2023-03-14

我刚刚在Android Studio的库项目中遇到了类似的问题。我的应用程序是在有Lollipop的设备上运行的,但不是在KitKat上。原因是我设置了多个dex,因为我使用了导入的google play服务,所以方法引用的数量超过64K。幸运的是,我已经设法消除了对多个索引的需要,将其减少到只导入谷歌地图。如果不能为您做到这一点,那么这篇和这篇文章可能会很有用。

 类似资料:
  • 问题内容: Eclipse昨天运行良好(自从大约一年前安装以来一直如此)。现在突然之间,我在启动时遇到以下错误: 我没有更改计算机上与Eclipse / Java相关的任何内容,但昨天对计算机应用了Windows更新,因此这可能与它有关(但我看不到任何会影响Java的东西)。我看过所有其他文章,这些文章都向您的PATH添加了一些东西,或者向Eclipse ini添加了-vm选项(无法使它正常工作)

  • 我查看了其他与我比较常见的帖子,但它们有一点差别,没有给我所需要的解决方案: 为了运行Eclipse,Java运行时环境(JRE)或Java开发工具包(JDK)必须可用。搜索以下位置后未找到Java虚拟机:C:\Program Files(x86)\Java\jdk1.80_25\jre\bin\javaw.exe

  • 我已经使用Eclipse很长一段时间了,但是我最近遇到了一个错误,这个错误现在真的困扰着我,因为我无法使用调试器。我可以正常运行我的程序,但不能运行调试器。这是我尝试使用调试器运行时得到的: 启动CarLoanUser时遇到问题无法连接到虚拟机无法连接到虚拟机com . sun . jdi . connect . transporttimeoutexception 在控制台中: 本机方法中的致命错

  • 问题内容: 我在使用以下配置运行Eclipse时遇到问题: eclipse.ini 除添加上面指定的行外,以上配置均有效。可能是什么问题呢? 我从具有4GB内存的Windows 7(64位)计算机上运行eclipse,尽管我在路径中指定的JDK是32位,这很好用。唯一的问题是,如果我添加这些其他配置参数。 问题答案: eclipse.ini中有两个地方,其中包括 做了

  • 查看虚拟机相关的监控告警信息。 监控菜单下的虚拟机页面主要用于查看虚拟机相关的监控告警信息。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “监控/资源/虚拟机” 菜单项,进入虚拟机页面。 查看虚拟机列表 该功能用于查看虚拟机的监控告信息。 在虚拟机页面,支持查看以下信息: 名称:虚拟机的名称。 IP:虚拟机的IP地址。 监控状态:虚拟机是否设置告警以及发生告警。 状态:虚拟机的当

  • 主机回收站用于存放用户删除的虚拟机和裸金属文件。 主机回收站用于存放用户删除的虚拟机和裸金属文件。回收站中主机文件默认保存3天,如有误删除的主机需要在3天内进行恢复操作,可以将其恢复到原来位置,超过3天后,文件将被彻底删除。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “主机/回收站/主机” 菜单项,进入主机回收站列表。 清除 当确定回收站中的主机无用后,可使用清除功能立即彻底删