在使用 Apple Silicon (M1 Pro) 時,我為 Android 專案構建的作業 Gradle 開始無法編譯。它給出的錯誤如下:
Execution failed for task ':persistence-database:createDatabase'.
> java.sql.SQLException: Error opening connection
No native library is found for os.name=Mac and os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64
我的專案設定類似于本指南和示例,以便在 Gradle 構建期間預填充 Room 資料庫。
為此,我使用 sqlite-jdbc 驅動程式打開 SQLite 資料庫,以便在使用任務執行之前填充一些資料。連接是這樣完成的:
private fun openSQL(dbFile: File, schemaFile: File, logger: Logger) =
Sql.newInstance("jdbc:sqlite:$dbFile", "org.sqlite.JDBC").apply {
...
}
}
通過快速的 Google 搜索,我發現根本問題似乎來自所使用的 xerial jdbc-sqlite 驅動程式的不兼容性。他們似乎在3.32.3.3版本中增加了支持。這也在我也在使用的2.4.0-alpha03版本的 Room 中得到修復。我不明白的是,即使更新到該版本或更新版本(當前使用最新的 3.36.0.3)仍然給我同樣的No native library is found錯誤。
知道會發生什么或我錯過了什么嗎?
先感謝您!
uj5u.com熱心網友回復:
TLDR:通過 Rosetta 2使用x64 版本的 Javajdbc-sqlite在基于 M1 的 macOS 上作業。
所以......在嘗試了一切之后,包括黑魔法,看起來解決它的唯一方法是使用 Java 的 x86_64 構建來運行這段代碼。我仍然不太明白它背后的原因,但它是制作這個版本的唯一一致方式。
為了不影響速度,您通常可以使用捆綁的 java 版本進行正常編譯,并在終端中將 x86_64 Java 作為默認版本,以便在再次看到此錯誤時使用它。希望他們能盡快在 ARM 的 Java 版本中解決這個問題......??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422617.html
標籤:
上一篇:按本地時間日期的SQLite組
下一篇:有沒有解決未授權錯誤的方法?
