Kotlin类NoClassDefFoundError崩溃

时间:2016-09-23 16:21:12

标签: android kotlin kotlin-extension

我有一个使用以下库的现有Android项目:

  1. AutoValue
  2. Dagger2
  3. RxJava
  4. Retrolambda
  5. 我正在尝试添加Kotlin支持,以便我可以将项目慢慢迁移到Kotlin。 这就是我所做的。

    1. 添加了Kotlin依赖项。
    2. 将其中一个类转换为Kt类并移至src/main/kotlin/..package..

    3. 在源集中添加了kotlin。 sourceSets {     main.java.srcDirs + =' src / main / kotlin' }

    4. 当我进行干净构建并部署应用程序时,我得到NoClassDefFoundError异常。但是,如果我再次部署它可以正常工作。 有什么建议?我在转换的类中没有任何注释,所以我没有应用kapt插件。

    5. 注意:我使用的是最新的kotlin 1.0.4。我也禁用了即时运行。

3 个答案:

答案 0 :(得分:4)

转到Files > Settings并完全关闭Instant Run,我的意思是应取消选中所有复选框。

清理并重建项目。

然后它应该工作

修改:正如您所说,Instant已停用 - 使用 protip 检查您的配置并更新Gradle和Android Studio(如果您不使用)最新的。

根据此issue,将Gradle插件版本从2.10更改为2.14.1可能有所帮助。

<强>普罗蒂普: 使用组合Ctrl + Shift + A查找

等命令
  • Configure Kotlin in Project

  • Configure Kotlin Updates

  • Convert Java File to Kotlin

答案 1 :(得分:0)

首先你需要用kotlin配置android studio,因为这需要在android studio中添加kotlin插件,然后需要添加依赖项然后将java类转换为kotlin请看看这个视频。

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

答案 2 :(得分:0)

在使用Java调用Kotlin类时,使用kt后缀。

否则在Kotlin类中的包之前添加@file:JvmName("Utils")如果你必须在java中使用你想要的任何自定义名称Utils来调用它。

more details can be found here