无法在 M1 上加载本机库 libLiteCore.dylib

问题描述 投票:0回答:3

我正在尝试在我的 M1 MacBook 上使用 CouchbaseLite 构建 JVM 应用程序(主要是 Kotlin)。 我的 build.gradle 文件中有这个:

implementation "com.couchbase.lite:couchbase-lite-java:3.0.0-beta02"
(也尝试过非 beta 版本 2.8.4)

Gradle 同步 + 构建很好,但每次我运行并尝试创建数据库时

db = Database(LOCAL_DB_NAME, config)
我收到以下错误:

java.lang.IllegalStateException: Cannot load native library libLiteCore.dylib @/Users/ale/Projects/server/CouchbaseLiteTemp/5e3b1711cace9de693b3e1e0bea0f2f8/libLiteCore.dylib for Mac OS X/aarch64
    at com.couchbase.lite.internal.NativeLibrary.load(NativeLibrary.java:113)
    at com.couchbase.lite.internal.CouchbaseLiteInternal.init(CouchbaseLiteInternal.java:80)
    at com.couchbase.lite.CouchbaseLite.init(CouchbaseLite.java:54)
    at com.couchbase.lite.CouchbaseLite.init(CouchbaseLite.java:42)
    at com.couchbase.lite.CouchbaseLite.init(CouchbaseLite.java:33)
    at de.ihaus.Main.Database.CouchbaseManager.initContext(CouchbaseManager.kt:34)
    at de.ihaus.Main.Dingo$main$1.invoke(Dingo.kt:15)
    at de.ihaus.Main.Dingo$main$1.invoke(Dingo.kt:14)
    at de.ihaus.Main.Login.LoginManager.onLoginSuccess(LoginManager.kt:64)
    at de.ihaus.Main.Login.LoginManager$LoginWorker.run(LoginManager.kt:53)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.UnsatisfiedLinkError: /Users/ale/Projects/server/CouchbaseLiteTemp/5e3b1711cace9de693b3e1e0bea0f2f8/libLiteCore.dylib: dlopen(/Users/ale/Projects/server/CouchbaseLiteTemp/5e3b1711cace9de693b3e1e0bea0f2f8/libLiteCore.dylib, 0x0001): tried: '/Users/ale/Projects/server/CouchbaseLiteTemp/5e3b1711cace9de693b3e1e0bea0f2f8/libLiteCore.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/lib/libLiteCore.dylib' (no such file)
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)

我环顾四周,但 CouchbaseLite 应该可以在 M1 上运行。 我做错了什么?

kotlin gradle jvm apple-m1 couchbase-lite
3个回答
3
投票

事实证明问题出在 Apple Silicon 版本的 JDK 上。 如果我使用 x86_64 版本的 JDK 运行该项目,Rosetta 就会启动并运行。现在必须忍受性能下降,但至少我不再被阻止了。


1
投票

不幸的是,CBL-Java 尚不支持 Native Mac M1。


0
投票

这将在 cb-lite 3.1.3 中修复。

© www.soinside.com 2019 - 2024. All rights reserved.