Kotlin 类 NoClassDefFoundError 崩溃

     2023-04-15     221

关键词:

【中文标题】Kotlin 类 NoClassDefFoundError 崩溃【英文标题】:Kotlin class NoClassDefFoundError crash 【发布时间】:2017-02-01 14:04:47 【问题描述】:

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

    自动值 匕首2 RxJava Retrolambda

我正在尝试添加 Kotlin 支持,以便我可以将项目慢慢迁移到 Kotlin。 这是我所做的。

    添加了 Kotlin 依赖项。

    将其中一个类转换为 Kt 类并移至 src/main/kotlin/..package..

    在源代码集中添加了 kotlin。 源集 main.java.srcDirs += 'src/main/kotlin'

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

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

【问题讨论】:

您可能希望将此报告给the Kotlin issue tracker,因为它看起来更像是需要分类并可能报告为错误的东西。 您是否在新的 .kt 文件中使用任何生成的类?可能在 kotlin 编译的时候这个类不存在。 【参考方案1】:

转到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

【讨论】:

是的,我已经完全禁用了即时运行,并且正在使用带有 gradle 2.14.1 的构建工具版本 2.2.0 运行 AS 2.2。 将构建工具更改为 24.0.3 在使用更新插件后,此问题已得到解决。此外,当这种情况发生时,我只需要清理工作区。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

否则,如果您必须在 Java 中使用您希望使用的任何自定义名称调用它,则在 Kotlin 类中的包之前添加 @file:JvmName("Utils"),例如在这种情况下为 Utils

more details can be found here

【讨论】:

kotlin——最详细的抽象类(abstract)内部类(嵌套类)详解

在前面几个章节中,详细的介绍了Kotlin类的类别中的数据类、密封类、接口类以及枚举类。在这个章节中会对Koltin的抽象类和内部类作出一个详细的讲解。如果对上面所提到的类的类别还不是很清晰的,请阅读我的前几篇文章。... 查看详情

浅谈kotlin:类

浅谈Kotlin(一):简介及AndroidStudio中配置浅谈Kotlin(二):基本类型、基本语法、代码风格 前言:  已经学习了前两篇文章,对Kotlin有了一个基本的认识,往后的文章开始深入介绍Kotlin的实战使用。  本篇介绍Kotlin中... 查看详情

Kotlin 类 NoClassDefFoundError 崩溃

】Kotlin类NoClassDefFoundError崩溃【英文标题】:KotlinclassNoClassDefFoundErrorcrash【发布时间】:2017-02-0114:04:47【问题描述】:我有一个使用以下库的现有Android项目:自动值匕首2RxJavaRetrolambda我正在尝试添加Kotlin支持,以便我可以将项目... 查看详情

访问公共类 (Kotlin)

】访问公共类(Kotlin)【英文标题】:Accessingapublicclass(Kotlin)【发布时间】:2021-09-1420:14:34【问题描述】:我是kotlin和androidstudio(我正在使用)的新手,所以这很简单,但是我在编写教程时遇到了这个问题问题很简单:我有两个kotl... 查看详情

kotlin学习与实践类接口

1、类的继承结构接口*Kotlin的类和接口与Java的有些地方不一样:*Kotlin的声明默认是publicfinal的。*Kotlin嵌套的类默认不是内部类:它没有包含对外部类的隐式引用等*Kotlin也一样是使用interface来声明接口*如下:声明一个简单的接口... 查看详情

Kotlin 数据类

】Kotlin数据类【英文标题】:KotlinDataclass【发布时间】:2019-08-1620:43:49【问题描述】:我在java中有以下POJO,它在SpringBoot应用程序中用于在应用程序启动期间从YML注入属性。尝试将应用程序转换为Kotlin,但是当我将POJO转换为数... 查看详情

Kotlin 类扩展

】Kotlin类扩展【英文标题】:KotlinClassExtension【发布时间】:2019-02-2102:27:49【问题描述】:我只是将Kotlin作为ProjectEuler的一个有趣的副项目来学习。我刚刚在5分钟前开始使用IntelliJIDEA。我有这个代码:funNumber.isMultipleOf(n:Number):Boo... 查看详情

Kotlin 类扩展

】Kotlin类扩展【英文标题】:KotlinClassExtension【发布时间】:2019-02-2102:27:49【问题描述】:我只是将Kotlin作为ProjectEuler的一个有趣的副项目来学习。我刚刚在5分钟前开始使用IntelliJIDEA。我有这个代码:funNumber.isMultipleOf(n:Number):Boo... 查看详情

Kotlin:找不到符号类片段或其他 android 类

】Kotlin:找不到符号类片段或其他android类【英文标题】:Kotlin:CannotfindsymbolclassFragmentorotherandroidclasses【发布时间】:2017-10-3001:42:04【问题描述】:我有一个带有viewPager的java片段..publicclassFragmentWithViewPagerextendsFragmentprivateclassViewPa... 查看详情

正如文档中所说,kotlin 1.2 中没有 kotlin.Math 类

】正如文档中所说,kotlin1.2中没有kotlin.Math类【英文标题】:Nokotlin.Mathclassinkotlin1.2asitissaidinthedocumentation【发布时间】:2019-01-0301:12:45【问题描述】:我最近一直在处理kotlin多平台,我完全理解开发的本质。最初,我有自己预期... 查看详情

RealmObject 的 Kotlin 数据类

】RealmObject的Kotlin数据类【英文标题】:KotlindataclassofRealmObject【发布时间】:2016-03-2521:58:35【问题描述】:我正在使用Kotlin和Realm编写一个数据类dataclassAuthToken(valregister:Boolean,valtoken:String,valtokenSecret:String,valuser:AuthUser)我必须将数... 查看详情

如何从kotlin中的类实例化对象

】如何从kotlin中的类实例化对象【英文标题】:howtoinstantiateanobjectfromaclassinkotlin【发布时间】:2019-02-1403:54:18【问题描述】:我正在学习Kotlin,我在google上搜索了如何在kotlin中创建一个类。所以,我创建了下面的类作为测试。在... 查看详情

深入kotlin-类(代码片段)

类Kotlin中定义类有些地方不同于java。不需要public一个类默认就是public的,所以不用显示地声明一个类为public。不需要花括号如果一个类是空实现,可以不需要classMyClass主构造方法Kotlin规定每个类允许有一个主构造方法和... 查看详情

如何从 Kotlin 的内部类访问外部类的成员?

】如何从Kotlin的内部类访问外部类的成员?【英文标题】:howtoaccessmemberofouterclassfrominnerclassinKotlin?【发布时间】:2019-09-0302:21:47【问题描述】:如何从kotlin内部类的成员函数中访问外部类的成员。考虑以下代码。classAvarname:String... 查看详情

Kotlin:在构造函数中初始化类属性

】Kotlin:在构造函数中初始化类属性【英文标题】:Kotlin:Initializeclassattributeinconstructor【发布时间】:2015-09-1115:22:02【问题描述】:我创建了一个带有类属性的Kotlin类,我想在构造函数中对其进行初始化:publicclassTestClassprivatevarc... 查看详情

Kotlin 中的 Parcelize 值(内联)类

】Kotlin中的Parcelize值(内联)类【英文标题】:Parcelizevalue(inline)classinKotlin【发布时间】:2021-12-2621:07:10【问题描述】:乍一看,像这样装饰一个kotlin值(内联)类似乎是可以的:@JvmInline@ParcelizevalueclassTestClass(valvalue:Long):Parcelabl... 查看详情

内部嵌套类的 Kotlin 工厂

】内部嵌套类的Kotlin工厂【英文标题】:KotlinFactoryonInnerNestedClass【发布时间】:2016-04-2112:50:11【问题描述】:我正在尝试使用伴随对象工厂方法(相当于Java中的静态工厂方法)在Kotlin中创建嵌套内部类。这是我的代码的简化版... 查看详情

kotlin内部类与嵌套类(代码片段)

kotlin内部类与嵌套类简单的说,kotlin嵌套类相当于java的静态内部类,kotlin内部类相当于java普通内部类。classOutClassvalocval="一个外部类变量值"//嵌套类,相当于Java的静态内部类classNestedClassfuntest1()="嵌套... 查看详情