I tried running TypeDB on my M1 MacBook using
./typedb server, but it results in the following error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/5v/95_mbj013y93vsmc8xps0stm0000gp/T/librocksdbjni8182124459810412816.jnilib
This error looks like it might occur when running a Java program with an incompatible JDK. What can I do to resolve it?
Prior to TypeDB 2.19.0, there were no distributions available for
aarch64 (ARM). As of Jul 6, 2023, the best solution is to upgrade to TypeDB 2.19.0 or above. If doing so through Homebrew, ensure you are using an ARM64 installation of
brew (i.e. the default).
If the running JDK targets
aarch64 (ARM), the architecture used by an M1 Mac, then an
UnsatisfiedLinkError is thrown at startup. There are no native ARM builds of TypeDB <v2.19.0, so in order for TypeDB to run correctly on an M1 MacBook you need to either upgrade TypeDB, or ensure that a JDK that targets
x64 architecture is installed.
For example, to install Eclipse Temurin (based upon OpenJDK):
- Visit https://adoptium.net/en-GB/temurin/releases/?version=11 to browse Temurin releases
- Select the
.pkg distribution of
JDK 11 with operating system
MacOS and architecture
- Download and install the Java binary displayed in the list below
- Verify that Java was installed correctly by running
java --version; the output should match the downloaded JDK version
Please note that this method relies on MacOS’s Rosetta translation, which will inflict a performance overhead on the application.
Important: We advise against attempting to install TypeDB <2.19.0 using Homebrew on a Mac with Apple Silicon chip. Please install via direct download instead. See below for explanation.
Homebrew users may need to run
x86_64 mode to install TypeDB under Rosetta with Apple Silicon (see macos - How to run the Homebrew installer under Rosetta 2 on M1 Macbook - Stack Overflow for details). The command might look like the following:
arch -x86_64 /usr/local/homebrew/bin/brew install typedb
Please be aware that this installation may take a very long time; in particular, several prerequisite packages including
gettext need to be compiled from source under Rosetta, which is not cheap. Also, we’ve observed that in some cases the incorrect version of
openjdk is installed as a dependency, which causes a different runtime error.
Hi Alex, thank you for this note. Just a heads-up for you guys: I am using Mac M1 pro and have set up x64 JDK11 as suggested above. However, after I installed the latest typedb (v2.12) via
brew install typedb, the
Java UnsatisfiedLinkError persisted. The error went away when I download typedb (v2.11.1) from Vaticle.
Homebrew users may also need to run
x86_64 mode to install under Rosetta with Apple Silicon (see macos - How to run the Homebrew installer under Rosetta 2 on M1 Macbook - Stack Overflow for details).
I think it can also be helpful to uninstall the preexisting non-Temurin JDK installation, to avoid having to muck about with environment variables and RC-file modifications.
We’re happy to announce that as of TypeDB 2.19.0, TypeDB supports native Mac and Linux
As a result, to install on M1 Macs, it is no longer required to install a separate Java to run under Rosetta emulation.
Instead, simply install a native Java runtime, for example via
As always, get the latest TypeDB from
brew or the Github releases page Releases · vaticle/typedb · GitHub.