Kotlin 中的错误但仅使用 Java - 类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter

Posted

技术标签:

【中文标题】Kotlin 中的错误但仅使用 Java - 类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter【英文标题】:Error in Kotlin but using only Java - Class kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter 【发布时间】:2019-02-18 01:13:35 【问题描述】:

我在尝试运行我的 android 应用程序时收到此错误,但我根本没有使用 Kotlin,应用程序是用 Java 编写的...

Class kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter can not access a member of class com.android.build.gradle.tasks.ManifestProcessorTask with modifiers "private"

【问题讨论】:

我发现了这个问题,因为它被用作First Posts review queue的测试(作为一个好问题的例子)。说真的,我真的不认为这个问题很有用,因为它指的是 OP 设备上损坏的构建环境,而选择的解决方案是“将其关闭然后再打开”。 【参考方案1】:

我是这样解决的:

    删除所有 .gradle 文件夹 使缓存无效/重新启动 对我来说一切都很好。

【讨论】:

而你所说的所有事情都可以通过简单地进行项目重建(Build -> Rebuild project)来完成 对我来说,它仅适用于文件夹的物理删除。重建我试过但没有。 (Build -> Rebuild project) 对我不起作用,但删除文件夹有效。但我仍然想知道,为什么会提出这个问题。 该修复对我有用,但一段时间后错误不断出现。有人找到更永久的解决方案了吗? 我必须每 5 分钟执行一次,这是严重的 Google 智障【参考方案2】:
Settings -> Languages & Frameworks -> Kotlin Updates -> Update channel -> Early Access Preview/Stable -> Update -> Restart

或者:

Tools -> Kotlin -> Configure Kotlin Plugin Update -> Update channel -> Early Access Preview/Stable -> Update -> Restart

【讨论】:

我不想删除任何文件夹或使缓存无效,但是从稳定切换到 EAP 更新通道并重新启动 Android Studio 足以让我的项目同步和再次构建。谢谢,+1。 但是,仍然需要使缓存无效以消除 Android Studio 在重启后开始显示的大量红色蠕动线。【参考方案3】:

将在 Android Studio 3.3 Canary 14 中修复:https://issuetracker.google.com/issues/115798277

同时,使用 Invalidate Caches/Restart

【讨论】:

【参考方案4】:
    Install 最新的 Gradle 版本(撰写本文时为 1.10.2)。

    安装最新版本的 Kotlin 插件:转到设置 Ctrl+Alt+S > 语言和框架 > Kotlin 更新 > 选择更新频道 > 点击【再次检查】 我当前的 Kotlin 插件版本是 1.3.0-rc-57。

    执行构建 > 清理项目以删除临时 gradle 文件。

    文件 > 使缓存无效/重新启动...

    使用 Gradle 文件重新启动同步项目并生成项目 (Ctrl+F9)。

【讨论】:

以上是关于Kotlin 中的错误但仅使用 Java - 类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 数据类中的函数作为参数导致打包错误

Kotlin系列之枚举类

如何使用 java / kotlin 中的注释处理将方法附加到现有类?

使用 FCM 推送通知时颤动中的 Kotlin 文件错误

在 Java 中使用 Kotlin 类:找不到符号

将代码从Java更改为Kotlin后,注释未正确转换