2016-09-28 17 views
4

我有一個Android項目,但現在失敗建設:NoClassDefFoundError的:COM /安卓/建設/ gradle產出/內部/ ToolingRegistryProvider

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組件的可用更新,但錯誤仍然存​​在。

A google search for "ToolingRegistryProvider"返回「您的搜索與任何文檔都不匹配」。

回答

1

該問題已通過刪除構建服務器上的gradle模塊緩存解決,然後讓構建重新下載所有內容。

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

將我的解決方案添加到此問題中:我將jcenter()添加到頂級存儲庫標記中。

我們使用一個Nexus服務器,它承載了許多我們在工作時使用的庫。所以當它試圖更新Gradle插件版本時,它試圖從Nexus服務器上這樣做,並且出於某種原因,更新拉出了正確的版本,但進行了一些更改,從而使gradle版本和gradle插件版本不同步。因此,通過添加jcenter() gradle插件已正確更新,並且此錯誤消失。

0

此錯誤可能來自不具有谷歌Maven倉庫作爲存儲庫中的文件build.gradle

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

相關問題