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

尝试将Android Gradle项目从Groovy迁移到Kotlin时出现CacheOpenException

孙乐逸
2023-03-14

因此,我试图将我的build.gradle文件从一个简单的玩具应用程序从Groovy迁移到新的Kotlin dsl for Gradle。我已经能够成功地迁移我的项目build.gradle文件,并且我还创建了一个buildSrc目录,该目录具有Kotlin文件中的所有版本号等等。到目前为止,gradle正在成功地同步和构建。但是,当我尝试将应用程序build.gradle转换为Kotlin(通过更改文件扩展名、更改所有函数调用和映射,从而遵循Kotlin语法)时,我在gradle同步中出现了一个错误,该错误表示:

org.gradle.internal.exceptions.LocationAwareException: A problem occurred configuring project ':app'.
Caused by: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
Caused by: org.gradle.cache.CacheOpenException: Could not open cache directory er2fj44y4paf4xwhwuc5jhit0 (C:\Users\Youssef Shoaib\.gradle\caches\5.6.4\gradle-kotlin-dsl-accessors\er2fj44y4paf4xwhwuc5jhit0).
Caused by: java.util.zip.ZipException: zip file is empty

我试过重建和清理大楼,但还是没用。当我将应用程序build.gradle改回groovy时,错误就消失了,一切正常,但我真的想使用Kotlin DSL进行gradle。我也试过改变我的Kotlin版本和Gradle版本,但它仍然不起作用。作为参考,这里是我的buildSrc build.gradle.kts

plugins {
    `kotlin-dsl`
}
repositories {
    jcenter()
}
object Versions {
    const val version_core = "1.1.0"
    const val version_coroutine = "1.1.1"
    const val version_constraint_layout = "1.1.3"
    const val version_gradle = "3.5.3"
    const val version_kotlin = "1.3.61"
    const val version_lifecycle_extensions = "2.1.0"
    const val version_navigation = "2.1.0"
    const val version_room = "2.2.2"
}

和我的项目build.gradle.kts文件:

buildscript {

    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath("com.android.tools.build:gradle:${Versions.version_gradle}")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.version_kotlin}")
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.version_navigation}")

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

tasks.register<Delete>("clean") {
    delete(rootProject.buildDir)
}

和我的应用程序build.gradle.kts文件:

plugins{
    id("com.android.application")
    kotlin("android")
    kotlin("android.extensions")
    kotlin("kapt")
    id("androidx.navigation.safeargs.kotlin")
}

android {
    compileOptions {
        sourceCompatibility( JavaVersion.VERSION_1_8)
        targetCompatibility( JavaVersion.VERSION_1_8)
    }

    kotlinOptions {
        jvmTarget("1.8")
    }
    compileSdkVersion(29)
    defaultConfig {
        applicationId = "com.example.android.trackmysleepquality"
        minSdkVersion(19)
        targetSdkVersion(29)
        versionCode = 1
        versionName = "1.0"
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = mapOf("room.incremental" to "true")
            }
        }
    }
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
        }
    }

    // Enables data binding.
    dataBinding {
        enabled = true
    }

}

dependencies {
    implementation(fileTree(mapOf("dir" to "libs"), "include:" to listOf("*.jar")))
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.version_kotlin}")

    // Support libraries
    implementation("androidx.constraintlayout:constraintlayout:${Versions.version_constraint_layout}")

    // Android KTX
    implementation("androidx.core:core-ktx:${Versions.version_core}")

    // Room and Lifecycle dependencies
    implementation("androidx.room:room-runtime:${Versions.version_room}")
    implementation("androidx.room:room-ktx:${Versions.version_room}")
    kapt("androidx.room:room-compiler:${Versions.version_room}")
    implementation("androidx.lifecycle:lifecycle-extensions:${Versions.version_lifecycle_extensions}")
    implementation("com.github.hadilq.liveevent:liveevent:1.0.1")

    // Coroutines
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.version_coroutine}")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.version_coroutine}")

    // Navigation
    implementation("androidx.navigation:navigation-fragment-ktx:${Versions.version_navigation}")
    implementation("androidx.navigation:navigation-ui-ktx:${Versions.version_navigation}")

    // Testing
    testImplementation("junit:junit:4.12")
    androidTestImplementation("androidx.test.ext:junit:1.1.1")
    androidTestImplementation("androidx.arch.core:core-testing:2.1.0")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.2.0")
    androidTestImplementation("org.mockito:mockito-core:3.1.0")
}

共有1个答案

慕和惬
2023-03-14

我终于找到了解决办法。我刚刚删除了我的用户文件夹中的整个.gradle目录,我想,这使Android Studio为Kotlin DSL的访问者准备的所有缓存都失效了。所以,到最后,它确实起作用了

 类似资料:
  • 问题内容: 由于办公室人员的变动,C#专业知识的水平急剧下降,现在有更多的Java开发人员。至此,高层人士正在考虑将用C#编写的现有.NET项目转移到Java世界中。 除了从头开始完全出现 的明显问题之外,该公司还可以通过哪些可行的方法成功地将项目从.NET C#移植到Java? 问题答案: 这里是要考虑的事情: 这是大项目吗?如果是,请尝试使用C# 这个中型项目是否包含组件?如果否,请尝试使用C

  • 迁移数据库ORM层 迁移模板Blade 迁移分页 迁移验证器 迁移Cache

  • 数据库 模板类 验证器 缓存类

  • 我最近移动了我的Laravel 5.3。1(存储库模式)从Windows 10到Ubuntu 16.04LTs的项目。当我更新composer时,我得到以下错误。 照明\Foundation\ComposerScript::postUpdate PHP警告:未捕获的错误异常:需要(/opt/lampp/htdocs/new-abc.test.lk):未能打开流:成功 /opt/lampp/htdo

  • 我试图升级Spring引导项目从1.5. x到2.1.3一切都编译文件,但它给运行时例外 组织。springframework。豆。工厂UnsatifiedDependencyException:创建名为“ldapConfig”的bean时出错:未满足的依赖项通过字段“ldapParams”表示;嵌套的异常是org。springframework。豆。工厂BeanCreationException

  • 迁移cache分页 仓库地址: cache 安装 composer require illuminate/cache 暂时实现 redis方式 还需安装 composer require illuminate/redis composer require predis/predis //个人比较喜欢predis 启动predis function frameInitialized() {