UnsatisfiedLinkError для собственного кода DuckDb на Java

При попытке открыть соединение с DuckDb на экземпляре EC2:

      NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Я получаю следующую ошибку:

      Caused by: java.lang.UnsatisfiedLinkError: 'java.nio.ByteBuffer org.duckdb.DuckDBNative.duckdb_jdbc_startup(byte[], boolean)'
        at org.duckdb.DuckDBNative.duckdb_jdbc_startup(Native Method)
        at org.duckdb.DuckDBDatabase.<init>(DuckDBDatabase.java:22)

Код открытия соединения выглядит следующим образом:

      try {
    DuckDBDatabase duckDb = new DuckDBDatabase("jdbc:duckdb:", false);
    connection= new DuckDBConnection(duckDb);
} catch (SQLException e) {
    throw new RuntimeException("Unable to open DuckDB connection.", e);
}

DuckDb добавлен как зависимость в gradle:

      implementation 'org.duckdb:duckdb_jdbc:0.2.4'

Этот же код работает локально в Windows и Linux. Любые идеи?

1 ответ

Проблема была в архитектуре. Покопавшись в коде DuckDb, оказалось, что он принимает только x86_64 и amd64. Нашим экземпляром был aarch64, поэтому файлы .so никогда не загружались.

Другие вопросы по тегам