8

我使用https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html对 dynamodb 进行了本地设置

我可以使用以下命令启动实例,java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb但是当我尝试执行其他任何操作时,它会给我以下错误。

2021 年 3 月 15 日下午 2:10:28 com.almworks.sqlite4java.Internal log 警告:[sqlite] 无法打开 DB[15]:com.almworks.sqlite4java.SQLiteException:[-91] 无法加载库:java.lang。 UnsatisfiedLinkError: /Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib: dlopen(/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib, 1): 找不到合适的图像。确实找到了:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib 中没有匹配的体系结构:通用包装器中没有匹配的体系结构三月2021 年 1 月 15 日下午 2:10:28 com.almworks.sqlite4java。内部日志严重:[sqlite] SQLiteQueue[shared-local-instance.db]:运行作业队列 com 时出错。almworks.sqlite4java.SQLiteException:[-91] 无法加载库:java.lang.UnsatisfiedLinkError:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:dlopen(/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/ libsqlite4java-osx.dylib, 1): 没有找到合适的图像。确实找到了:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib 中没有匹配的体系结构:通用包装器中没有匹配的体系结构com.almworks.sqlite4java.SQLite.loadLibrary(SQLite.java:97) 在 com.almworks.sqlite4java.SQLiteConnection.open0(SQLiteConnection.java:1441) 在 com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:282)在 com.almworks.sqlite4java。SQLiteConnection.open(SQLiteConnection.java:293) 在 com.almworks.sqlite4java.SQLiteQueue.openConnection(SQLiteQueue.java:464) 在 com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:641) 在 com.almworks.sqlite4java .SQLiteQueue.runQueue(SQLiteQueue.java:623) at com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77) at com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue.java:205) at java。 base/java.lang.Thread.run(Unknown Source) 引起:java.lang.UnsatisfiedLinkError: /Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib: dlopen(/Users/ahsanejaz/Downloads/dynamodb_local_latest/ DynamoDBLocal_lib/libsqlite4java-osx.dylib, 1):找不到合适的图像。确实找到了:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:

这个问题与新的 M1 Apple Silicon 架构有关吗?有什么解决方法吗?

4

3 回答 3

6

我能够运行 DynamoDB 安装 java 版本 x86-64 架构而不是 arm64 并从 Rosetta 终端启动它

java --version 
openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment Zulu16.30+15-CA (build 16.0.1+9)
OpenJDK 64-Bit Server VM Zulu16.30+15-CA (build 16.0.1+9, mixed mode, sharing)

https://www.azul.com/downloads/zulu-community/?version=java-16-sts&os=macos&architecture=x86-64-bit&package=jre

于 2021-05-08T02:31:08.650 回答
1

我在通过 brew 安装的 dynamodb-local 时遇到了同样的问题。显然,正在使用的 sqlite4java 库中没有 arm 版本。例如我得到:

Caused by: java.lang.UnsatisfiedLinkError: /opt/homebrew/Caskroom/dynamodb-local/latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib: dlopen(/opt/homebrew/Caskroom/dynamodb-local/latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib, 1): no suitable image found.  Did find:
    /opt/homebrew/Caskroom/dynamodb-local/latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib: no matching architecture in universal wrapper

有趣的是,使用 docker预览版的 docker 映像对我来说工作得很好,例如,通过使用Deploying DynamoDB Locally on Your Computer中的 docker compose 文件(在 Docker 选项卡上)。

于 2021-03-17T18:24:29.237 回答
0

您可以使用新发布的 Apple Silicon (M1) 库。将其复制到您正在查看的文件夹中应该可以修复错误:

io.github.ganadist.sqlite4java:libsqlite4java-osx-aarch64:1.0.392

sqlite4java.library.path您可以使用系统属性指定自定义本机库路径:

System.setProperty("sqlite4java.library.path", "./native-libs")
于 2022-02-04T14:14:56.123 回答