2016-09-23 75 views
8

我有一個使用下列庫現有的Android項目:科特林類NoClassDefFoundError的崩潰

  1. AutoValue
  2. Dagger2
  3. RxJava
  4. Retrolambda

我想補充科特林支持,以便我可以慢慢將項目遷移到Kotlin。 這是我所做的。

  1. 增加了對Kotlin的依賴。
  2. 轉換的類之一到的Kt類並移動到src/main/kotlin/..package..

  3. 添加科特林在源集。 sourceSets { main.java.srcDirs + = '的src/main /科特林' }

  4. 當我做一個乾淨的構建和部署應用程序,我得到的NoClassDefFoundError例外。但是,如果我再次部署,它工作得很好。 有什麼建議嗎?我沒有在我轉換的課程中添加註釋,所以我沒有應用kapt插件。

注:我正在使用最新的kotlin 1.0.4。我也有即時運行禁用。

+0

你可能想,因爲它似乎更喜歡的事,需要分流和作爲一個bug報告可能對本報告對[科特林問題跟蹤](http://kotl.in/issue)。 –

+0

您是否在新的.kt文件中使用任何生成的類?可能在編譯kotlin的時候,這個類不存在。 – lllyct

回答

4

轉到Files > Settings並完全關閉​​,我的意思是所有複選框都應該取消選中。

清潔和重建項目。

那麼它應該工作

編輯:正如你說,即時被禁用 - 使用protip檢查您的配置,如果你不使用最新的更新搖籃和Android工作室。

根據此issue,將Gradle插件版本從2.10更改爲2.14.1可能會有幫助。

普羅蒂普: 使用組合鍵Ctrl + Shift + A鍵找到像

  • Configure Kotlin in Project

  • Configure Kotlin Updates

  • Convert Java File to Kotlin

命令
+0

是的,我已經完全禁用了即時運行,並且正在使用Gradle 2.14.1運行AS 2.2並使用構建工具版本2.2.0。 – bond

+0

將build-tools更改爲24.0.3 – piotrek1543

+0

@bond解決了。如果是,則添加解決方案 – piotrek1543

0

首先你需要爲你的android studio配置kotlin,爲此需要在android studio中添加kotlin插件,然後需要添加依賴關係,然後將java類轉換爲kotlin請看看這個視頻。

https://www.youtube.com/watch?v=DN2EDdycZ3c

0

後綴的科特林類與kt與Java調用它們時。

否則請在Kotlin類中的包之前添加@file:JvmName("Utils"),如果您必須在java中調用它,並使用您希望的任何自定義名稱Utils

more details can be found here