注意: 无法读取获取 [Ljava.lang.Object;@79d6c4df 的 kotlin 元数据

共7个回答, 标签: android android-gradle android-room androidx

我一直收到这个错误。我正在做一个项目, 在开发过程中, 我决定迁移到 Android X。

我得到下面的错误:

Note: Failed to read get kotlin metadata for [Ljava.lang.Object;@79d6c4df

实体文件中也有相同的错误, 在相应的 DAO 中也有 4 相同的错误。

下面是 DAO 的代码:

@Dao
public interface FlockDao{
    @Query("SELECT * FROM flock_table")
    LiveData> getAllFlocks();

    @Query("SELECT * FROM flock_table WHERE fid IN (:flockIds) LIMIT 1")
    Flock loadFlockById(int[] flockIds);

    @Insert
    void insert(Flock flock);

    @Update
    void update(Flock flock);

    @Delete
    void delete(Flock flock);
}

我的实体是:

@Entity
public class Flock{

    @PrimaryKey(autoGenerate = true)
    private int fid;

    @ColumnInfo(name = "user_id")
    private int uid;

    @ColumnInfo(name = "name")
    private String name;

    @ColumnInfo(name = "capacity")
    private int capacity;

    @ColumnInfo(name = "type")
    private String type;

    @ColumnInfo(name = "arrived")
    private Date arrived;

    .....rest of the code is omitted, there are constructor, setters and getters
}
第1个答案

我更新了我的房间减少到 2.1.0-alpha05, 得到了同样的问题。回到 2.1.0-阿尔帕兹解决了我的问题。

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'

更新功能 如果您确实想要使用 Room 版本 2.1.0-alpha05, 请将以下延迟添加到项目存储库:

maven { url 'https://kotlin.bintray.com/kotlinx/' }

参考: Androidx 房间发行说明

第2个答案

我通过降级到:

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'
第3个答案

无效缓存并重新启动解决了我的问题。我的房间版本 2.1.0-alpha06, 我还向我的项目存储库中添加了以下依赖项:

 maven { url 'https://kotlin.bintray.com/kotlinx/' }
第4个答案

我遇到了同样的问题, 并通过重写对象的等号 & hashCode 方法来解决它。
适用于您的案例的可能解决方案:

@Override
public int hashCode() { return (27 * fid + (name!= null ? name.hashCode() : 0)); }

@Override
public boolean equals(@Nullable Object obj) {
    if (this == obj) return true;
    if (!(obj instanceof Flock)) return false;
    Flock flock = (Flock) obj;
    if(fid != flock.fid) return false;
    return name != null ? name.equals(flock.name) : flock.name == null;
}

您还需要在 Room 中找到日期用法的解决方案, Room 没有日期变量的生成解决方案。

第5个答案

添加 import androidx.room.Dao; , 然后重新导入它为我做了把戏。

第6个答案

和大多数与 Room 有关的错误一样, 弹出最多的错误消息最不可能是您的问题。对我来说, 它通过添加以下内容帮助提高了最大错误计数:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        < "-xmaxerrs"="">< "1000"="" }="" }="">

, 然后执行分级任务:

 :app compileDebugJavaWithJavac

然后, 你会得到一个大的错误列表, 在您的情况下,

Note: Failed to read get kotlin metadata for [Ljava.lang.Object;@79d6c4df

但在这个列表中的某个地方, 你的真正错误就像错误的查询之类的。 修复这些错误并重建项目, 该项目大部分时间都有效, 但有时您必须使缓存无效并重新启动 Android Studio。

第7个答案

解决!

//Downgraded to alpha04.

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'

// Other dependencies are..

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.1.0-alpha03'
implementation 'androidx.lifecycle:lifecycle-livedata:2.1.0-alpha03'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.1.0-alpha03'

// Removed this from project level gradle.
maven { url "https://kotlin.bintray.com/kotlinx/" }

在这些变化之后, 不要忘记清理和重建项目

相关问题

无法通过新项目从 jcenter 获取依赖项 [已关闭] 注意: 无法读取获取 [Ljava.lang.Object;@79d6c4df 的 kotlin 元数据 我的单身可以被多次调用 游戏服务中存在的问题--基于离子的测量 如何摆脱增量注释处理请求的警告? 有没有办法告诉房间关于自定义 sqlite 函数? Android 数据绑定升级到5.0 级后 "缺少导入表达式, 尽管它已注册" Android studio 3.5 警告: 规则 &ldquo;-保留公共类 * 扩展 androidx。<init>();} &#39;使用扩展