java - 找不到类 'kotlin.jvm.internal.DefaultConstructorMarker'

标签 java android kotlin kotlin-android-extensions

我目前正在开发一个使用 Kotlin 编码的 Android 应用程序。 直到昨天一切都很好,在某个时候我开始在 logcat 中出现这个错误,当这种情况发生时,应用程序的内容不会显示。这是详细说明:

11-23 17:08:40.819 10472-10472/ch.XXX.XXX W/dalvikvm: DexOpt: resolve class illegal access: Lch/XXX/XXX/commons/features/CouponsManager; -> Lkotlin/jvm/internal/DefaultConstructorMarker;
11-23 17:08:40.819 10472-10472/ch.XXX.XXX E/dalvikvm: Could not find class 'kotlin.jvm.internal.DefaultConstructorMarker', referenced from method ch.XXX.XXX.commons.features.CouponsManager.<init>
11-23 17:08:40.819 10472-10472/ch.XXX.XXX W/dalvikvm: VFY: unable to resolve check-cast 3145 (Lkotlin/jvm/internal/DefaultConstructorMarker;) in Lch/XXX/XXX/commons/features/CouponsManager;
11-23 17:08:40.819 10472-10472/ch.XXX.XXX W/dalvikvm: DexOpt: resolve class illegal access: Lch/XXX/XXX/commons/features/CouponsManager; -> Lkotlin/jvm/internal/DefaultConstructorMarker;

引用的类是用 Kotlin 编写的,在错误开始出现之前没有修改。

编辑

这是导致问题的类:

class CouponsManager(private val api: RestApi = RestApi()) {

    fun getAllCoupons(): Observable<CouponDataResponse> {
        return Observable.create { subscriber ->

            val callResponse = api.getCoupons()
            val response = callResponse.execute()

            if (response.isSuccessful) {
                val coupons = response.body()

                subscriber.onNext(coupons)
                subscriber.onCompleted()
            } else {
                subscriber.onError(Throwable(response.message()))
            }

        }
    }

    fun getCoupons(): Observable<List<Coupon>> {
        return getAllCoupons().map {
            it.Coupons.map {
                Coupon(it.TopCouponImageUrl, it.BarcodeUrl, it.TopCouponText, it.BottomCouponText, it.BottomCouponImageUrl)
            }
        }
    }

    fun getLoyaltyCards(): Observable<List<Coupon>> {
        return getAllCoupons().map {
            it.Loyalty.map {
                Coupon(it.TopCouponImageUrl, it.BarcodeUrl, it.TopCouponText, it.BottomCouponText, it.BottomCouponImageUrl)
            }
        }
    }

}

最佳答案

所以,正如@DimaRostopira 所说,Kotlin 不能与 Instant Run 一起使用,所以它已经被关闭了,但显然,在更新到新版本的 Android Studio 之后,似乎已经完成了构建以支持Instant Run,所以一些已经存在的构建类只被部分编译和缓存。

我尝试清理项目,但我不得不手动删除整个 build 文件夹以使项目再次正确运行。

所以解决方案是在项目文件夹中 rm -Rf build/,打开 Android Studio 并从头开始重新构建所有内容。

关于java - 找不到类 'kotlin.jvm.internal.DefaultConstructorMarker',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779818/

相关文章:

java - 在 Visual Studio Code 中以 json 格式编写 Java 代码片段

java - 找不到类名 : com. mysql.jdbc.Driver 的驱动程序

android - Gradle 失败 - null VariantManager

android - 为什么我的LayoutParams不更改我的布局?

spring - 如何在 BeanFactoryPostProcessor 中获取命令行参数?

java - Java区分大小写吗?

java - 我如何在 asynctask 中创建 arrayadapter。执行后

java - 希望添加一个计算器来计算食品应用程序今天的卡路里

android - 如何更改 Android 中 tabStrip 的颜色?

android - 标准视口(viewport)设置不适用于 Android/Chrome