2016-09-23 76 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