TaskExecutionException: Execution failed for task ':app:transformJackWithJackForDebug'最權威有效的解決方案
阿新 • • 發佈:2018-12-10
原來 app:compileDebugJavaWithJavac 造成的原因是java jdk 8 編譯的方式和之前版本的編譯方式變了,所以程式碼裡面有語法錯誤或者類路徑錯誤會導致編譯不能通過而報出這個異常,這裡簡單講下新版和舊版的jdk的編譯方式的區別。
- 舊版 javac 工具鏈: javac (.java –> .class) –> dx (.class –> .dex)
- 新版 Jack 工具鏈: Jack (.java –> .jack –> .dex)
回到正題上,真正的解決方案在這裡,非常神奇:
在命令列中進入專案的根目錄,或者可以在Android studio的Terminal中直接操作也可以,然後敲入一個命令:
gradlew compileDebug --stacktrace -info
或者:
gradlew compileDebug --stacktrace -debug
我直接用了這個命令,這個顯示的錯誤資訊最詳細,建議你直接用這個,
gradlew compileDebugSources --stacktrace -info
-debug的命令我也試了,顯示的非常多,但不像-info一樣顯示錯誤提示的資訊非常詳細,你可以兩個都嘗試一下。
最後在出現的資訊中找到了這個提示
於是順著錯誤提示的地方果然找到了,原來是類的匯入路徑錯誤引起的這個異常,解決掉這個錯誤後再次編譯眼睛盯著編譯的進度,最擔心突然tasks停下來爆出一片紅了,I am so lucky!!!,專案成功的跑起來了,哈哈,開眼界了這一次,祝賀自己能從這個大坑裡面爬出來吧,哈哈,順便寫下這篇部落格來記錄這一段爬坑的“美好”記憶