原因:java.lang.Exception:没有为 os.name=Mac 和 os.arch=aarch64 找到本机库。路径=/org/sqlite/native/Mac/aarch64

Posted

技术标签:

【中文标题】原因:java.lang.Exception:没有为 os.name=Mac 和 os.arch=aarch64 找到本机库。路径=/org/sqlite/native/Mac/aarch64【英文标题】:Caused by: java.lang.Exception: No native library is found for os.name=Mac and os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64 【发布时间】:2021-10-23 07:56:52 【问题描述】:

我正在使用 android Studio [Android Studio 北极狐 | 2020.3.1补丁1]

My room library version is [2.3.0]
Used Gradle version [7.0.1]
Also added kapt 'org.xerial:sqlite-jdbc:3.36.0.1'


Caused by: java.lang.Exception: No native library is found for os.name=Mac and     os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64 at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:333) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:64) at androidx.room.verifier.DatabaseVerifier.<clinit>(DatabaseVerifier.kt:71)

如何解决这个错误?

解决方案 使用 Room 版本:2.4.0-alpha03 或更高版本。

【问题讨论】:

想必你需要摆脱kapt 'org.xerial:sqlite-jdbc:3.36.0.1'。它不是注释处理器,Room 不使用该库。 我已删除该行并尝试但仍然错误。 与***.com/questions/67758513/… 基本相同的问题。该问题的错误跟踪器在这里:issuetracker.google.com/issues/174695268#comment9 谢谢,它适合我。 【参考方案1】:

如果您使用的是 Apple M1 芯片

他们提到的jetpack发布说明之一(版本2.4.0-alpha03)

修复了 Room 的 SQLite 原生库以支持 Apple 的 M1 芯片的问题。

将版本更改为 2.4.0-alpha03 或更高版本

implementation "androidx.room:room-runtime:2.4.0-alpha03"
annotationProcessor "androidx.room:room-compiler:2.4.0-alpha03"
kapt 'androidx.room:room-compiler:2.4.0-alpha03'

参考

https://developer.android.com/jetpack/androidx/releases/room#version_240_2

【讨论】:

这个对我有用。因此,对于任何收到有关“执行 org.jetbrains.kotlin.gradle.internal.KaptExecution Room 数据库时发生故障”但必须运行 --stacktrace 才能看到真正错误“没有找到 os.name 的本机库”的主要错误消息的人=Mac 和 os.arch=aarch64". 2.4.0-alpha05 也可以。 这很奇怪,但很有效。但是,您不认为处于 Alpha 阶段会导致未来出现任何问题或现场制作应用程序出现问题。那就是与团队合作? @Abhimanyu 芯片为Apple M1 Pro时同样解决问题【参考方案2】:

更新(2021 年 10 月 26 日)- 似乎 Room 在最新的更新中得到了修复, 因此,您可以考虑将 Room 更新到最新版本: ---- 2.4.0-alpha03 ---- 或以上

对于那些面临这个问题的人,您现在可以简单地在房间编译器之前添加这一行作为解决方法:

kapt "org.xerial:sqlite-jdbc:3.34.0"

如果上述解决方法不起作用,我建议改用此解决方法,将其添加到根 build.gradle。这将强制在整个项目中使用给定的依赖项:

allprojects 
    configurations.all 
        resolutionStrategy 
            force 'org.xerial:sqlite-jdbc:3.34.0'
        
    


【讨论】:

谢谢你为我节省了几个小时 不错的一个。只需添加依赖项即可解决我的问题。我正在使用 MacBook Pro M1。谢谢。 不错的保存,这里是另一个 M1 用户。此修复了编译错误。【参考方案3】:

Room [2.4.0-alpha04] 修复了这个问题。

并删除 kapt "org.xerial:sqlite-jdbc:3.34.0"

【讨论】:

谢谢,这对我也有用。我真的不喜欢我的项目在我没有进行任何更改的情况下随机中断的事实。感觉很不稳定。 我花了1个小时解决了这个问题!谢谢!【参考方案4】:

这对我有用:

将应用级build.gradle中的room版本更改为2.3.0

def room_version = "2.3.0" // for Room
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"

在项目级build.gradleallprojects中添加如下配置

allprojects 
    repositories 
        // ...
    

    // ADD THE FOLLOWING
    configurations.all 
        resolutionStrategy 
            force 'org.xerial:sqlite-jdbc:3.34.0'
        
    

清理并重建您的项目 :)

参考:this comment 在 Google 问题跟踪器上

【讨论】:

以上是关于原因:java.lang.Exception:没有为 os.name=Mac 和 os.arch=aarch64 找到本机库。路径=/org/sqlite/native/Mac/aarch64的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown

java.lang.Exception:没有找到匹配使用 Intellij IDEA 的方法的测试

异常处理

Spring事务不起作用原因

android 应用程序中的 Geckoview 因错误“java.lang.Exception:加载 sqlite 库时出错”而崩溃

JUnit测试提示Java.lang.Exception: No runnable methods