'无法为类型 org.gradle.api.internal.tasks.DefaultSourceSetOutput 的主要 类 获取未知 属性 'classesDir'。错误

'Could not get unknown property 'classesDir' for main classes of type org.gradle.api.internal.tasks.DefaultSourceSetOutput.' error

因为我想检查 this 源代码,所以我将它导入 Android Studio。我之前遇到了一些其他错误并修复了它们。这很烦人,现在我有一个新错误。 我收到此错误:

Build file 'C:\Users\hange\Desktop\libgdx-demo-superjumper-master\desktop\build.gradle' line: 18

A problem occurred evaluating project ':desktop'.
> Could not get unknown property 'classesDir' for main classes of type org.gradle.api.internal.tasks.DefaultSourceSetOutput.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

我的“desktop\build.gradle”文件如下所示。我在那里指定了第 18 行。

apply plugin: "java"

sourceCompatibility = 1.6
sourceSets.main.java.srcDirs = [ "src/" ]

project.ext.mainClassName = "com.badlogicgames.superjumper.desktop.DesktopLauncher"
project.ext.assetsDir = new File("../android/assets");

task run(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}

task dist(type: Jar) {
    from files(sourceSets.main.output.classesDir)   // THIS IS 18th LINE.
    from files(sourceSets.main.output.resourcesDir)
    from {configurations.compile.collect {zipTree(it)}}
    from files(project.assetsDir);
 
    manifest {
        attributes 'Main-Class': project.mainClassName
    }
}

dist.dependsOn classes

编辑:我的“build.gradle”文件如下所示。但我注意到它无法解析 json 库。错误可能在这里,因为我们正在从互联网上的 json 文件中提取 gradle 版本。

import groovy.json.JsonSlurper // Cannot resolve symbol 'json'

buildscript {

    ant.get(src: 'https://libgdx.com/service/versions.json', dest: 'versions.json')
    def versionFile = file('versions.json')
    def json
    if (versionFile.exists()) {
        json = new JsonSlurper().parseText(versionFile.text)
    } else throw new GradleException("Unable to retrieve latest versions, please check your internet connection")

    ext {
        gdxVersion = json.libgdxRelease
        roboVMVersion = json.robovmVersion
        roboVMGradleVersion = json.robovmPluginVersion
        androidToolsVersion = json.androidBuildtoolsVersion
        androidSDKVersion = json.androidSDKVersion
        androidGradleToolsVersion = json.androidGradleToolVersion
        gwtVersion = json.gwtVersion
        gwtGradleVersion = json.gwtPluginVersion
    }

    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        google()
    }

    dependencies {
        classpath "org.wisepersist:gwt-gradle-plugin:$gwtGradleVersion"
        classpath "com.android.tools.build:gradle:$androidGradleToolsVersion"
        classpath "com.mobidevelop.robovm:robovm-gradle-plugin:$roboVMGradleVersion"
    }
}

我正在发布解决方案,以防其他人遇到同样的问题:
androidToolsVersion, androidSDKVersion, androidGradleToolsVersion, gwtGradleVersion

这 4 个变量是从互联网上的 json 文件中提取的,但是从 json 文件中提取的值可能并不总是正确工作。使变量兼容。

例如,此代码使用 classesDir.The classesDir 属性 已在 Gradle 5.x.
中删除 如果你拉到 Gradle 4.8.1,你会得到错误“最低支持 Gradle 版本是 6.5。当前版本是 4.8.1。”。要修复此错误,您必须将与 4.8.1 gradle 版本兼容的 3.2.x 值分配给 androidGradleToolsVersion 变量。

androidGradleToolsVersion = "3.2.1"