【问题标题】:NoClassDefFoundError: com/android/build/gradle/internal/ToolingRegistryProviderNoClassDefFoundError:com/android/build/gradle/internal/ToolingRegistryProvider
【发布时间】:2017-02-06 20:26:42
【问题描述】:

我有一个 Android 项目现在无法构建:

FAILURE: Build failed with an exception.

* Where:
Build file 'build.gradle' line: 28

* What went wrong:
A problem occurred evaluating root project 'X'.
> java.lang.NoClassDefFoundError: com/android/build/gradle/internal/ToolingRegistryProvider

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

项目在以下依赖项下构建良好:

'com.android.tools.build:gradle:2.1.3'
'com.android.tools.build:gradle-experimental:0.7.3'

一位同事应用了 AndroidStudio 提供的更新。这将插件版本更改为:

'com.android.tools.build:gradle:2.2.0'
'com.android.tools.build:gradle-experimental:0.8.0'

本次更新后,项目在他的开发机器上成功构建 (Windows 7)和我的(Ubuntu 16.04)。错误发生在 Jenkins 构建上 服务器(Ubuntu 16.04)。我在构建服务器上安装了 Android SDK 组件的可用更新,但错误仍然存​​在。

google search for "ToolingRegistryProvider" 返回“您的搜索不匹配任何文档”。

【问题讨论】:

    标签: android-gradle-plugin


    【解决方案1】:

    我对 JetpackCompose 组合多平台项目结构有相同的体验

    android/
        |
        - build.gradle.kts
    desktop/
        |
        - build.gradle.kts
    common/
        |
        - build.gradle.kts
    buildSrc/
        |
        - build.gradle.kts 
    

    常用id("com.android.library") 但是收到 NoClassFound 错误 我必须添加

    buildSrc/build.gradle.kts

        // ...
        repositories{
            mavenLocal()
            mavenCentral()
            google()
        }
        dependencies{
           compileOnly("com.android.tools.build:gradle:7.0.4")
        }
        // ...
    

    另外,请确保拥有。

    google() 在 allprojects 部分或特定的 build.gradle.kts 文件中。 类实际上可能会丢失。

    【讨论】:

      【解决方案2】:

      此错误可能是因为您的 build.gradle 文件中没有将 Google Maven 存储库作为存储库:

      allprojects {
          repositories {
              google()
      
              // If you're using a version of Gradle lower than 4.1, you must instead use:
              // maven {
              //     url 'https://maven.google.com'
              // }
              // An alternative URL is 'https://dl.google.com/dl/android/maven2/'
          }
      }
      

      更多信息请参见this link

      【讨论】:

        【解决方案3】:

        添加我对此问题的解决方案:我将jcenter() 添加到顶级存储库标签。

        我们使用 Nexus 服务器来托管我们在工作中使用的大量库。因此,当它尝试更新 gradle 插件版本时,它尝试从 Nexus 服务器执行此操作,并且由于某种原因,更新提取了正确的版本,但进行了一些更改,使得 gradle 版本和 gradle 插件版本不同步.因此,通过添加jcenter(),gradle 插件已正确更新,此错误消失了。

        【讨论】:

          【解决方案4】:

          通过删除构建服务器上 gradle 的模块缓存,然后让构建重新下载所有内容,问题得到解决。

          rm -r ~/.gradle/caches/modules-2
          

          【讨论】:

            猜你喜欢
            • 2017-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-24
            • 2015-02-24
            • 2019-03-05
            • 1970-01-01
            相关资源
            最近更新 更多