diff --git a/java/src/main/java/org/burningwave/jvm/util/Libraries.java b/java/src/main/java/org/burningwave/jvm/util/Libraries.java
index 780bea97..9a379e20 100644
--- a/java/src/main/java/org/burningwave/jvm/util/Libraries.java
+++ b/java/src/main/java/org/burningwave/jvm/util/Libraries.java
@@ -57,11 +57,15 @@ private Libraries() {
}
String osArch = jVMInfo.osArch != null ? jVMInfo.osArch : "generic";
String operatingSystemName = jVMInfo.operatingSystemName != null ? jVMInfo.operatingSystemName.toLowerCase(Locale.ENGLISH) : "generic";
+ boolean isMac = (operatingSystemName.indexOf("mac") >= 0) || (operatingSystemName.indexOf("darwin") >= 0);
prefix = "lib";
if (osArch.equals("aarch64")) {
conventionedSuffix = osArch;
- extension = "so";
- } else if ((operatingSystemName.indexOf("mac") >= 0) || (operatingSystemName.indexOf("darwin") >= 0)) {
+ // On macOS the loader still needs the platform-correct extension; previously
+ // this branch hardcoded "so" which made aarch64 macOS fail with
+ // "slice is not valid mach-o file" when dlopen tried to parse a Linux ELF.
+ extension = isMac ? "dylib" : "so";
+ } else if (isMac) {
extension = "dylib";
} else if (operatingSystemName.indexOf("win") >= 0) {
prefix = null;
diff --git a/native/bin/libNativeExecutor-aarch64.dylib b/native/bin/libNativeExecutor-aarch64.dylib
new file mode 100755
index 00000000..1169ccfb
Binary files /dev/null and b/native/bin/libNativeExecutor-aarch64.dylib differ
diff --git a/native/pom.xml b/native/pom.xml
index 7a4988e6..cd481a0e 100644
--- a/native/pom.xml
+++ b/native/pom.xml
@@ -50,6 +50,10 @@
-O3 -fPIC
-fPIC -shared
NativeExecutor
+
+ x${sun.arch.data.model}
@@ -63,7 +67,25 @@
lib${org.codehaus.mojo.option.gcc-linker.artifact-name}
dylib
- ${java.home}/include/darwin/
+ ${java.home}/include/darwin/
+
+
+
+
+ mac-aarch64
+
+
+ mac
+ aarch64
+
+
+
+ aarch64
@@ -251,7 +273,7 @@
- ${org.codehaus.mojo.option.gcc-linker.final-name}-x${sun.arch.data.model}
+ ${org.codehaus.mojo.option.gcc-linker.final-name}-${linker.arch.suffix}
${packaging.type}