diff --git a/ci/vcpkg/ports.patch b/ci/vcpkg/ports.patch
index 68f6cae5addc9..d280938cec780 100644
--- a/ci/vcpkg/ports.patch
+++ b/ci/vcpkg/ports.patch
@@ -64,3 +64,15 @@ index 4d7e26a..1f054a2 100644
)
vcpkg_cmake_install(ADD_BIN_TO_PATH)
+diff --git a/ports/liblzma/portfile.cmake b/ports/liblzma/portfile.cmake
+index 0fdc38dff..338d151e5 100644
+--- a/ports/liblzma/portfile.cmake
++++ b/ports/liblzma/portfile.cmake
+@@ -1,6 +1,6 @@
+ vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+- REPO tukaani-project/xz
++ REPO bminor/xz
+ REF "v${VERSION}"
+ SHA512 c28461123562564e030f3f733f078bc4c840e87598d9f4b718d4bca639120d8133f969c45d7bdc62f33f081d789ec0f14a1791fb7da18515682bfe3c0c7362e0
+ HEAD_REF master
\ No newline at end of file
diff --git a/java/gandiva/pom.xml b/java/gandiva/pom.xml
index d7a36ed7d282c..1ce87830d4bf8 100644
--- a/java/gandiva/pom.xml
+++ b/java/gandiva/pom.xml
@@ -26,6 +26,7 @@
1.8
1.8
3.25.1
+ 5.14.0
true
../../../cpp/release-build
@@ -62,6 +63,11 @@
org.slf4j
slf4j-api
+
+ net.java.dev.jna
+ jna
+ ${jna.version}
+
diff --git a/java/gandiva/src/main/java/org/apache/arrow/gandiva/evaluator/JniLoader.java b/java/gandiva/src/main/java/org/apache/arrow/gandiva/evaluator/JniLoader.java
index 2528989f3784b..9d00bb04286c9 100644
--- a/java/gandiva/src/main/java/org/apache/arrow/gandiva/evaluator/JniLoader.java
+++ b/java/gandiva/src/main/java/org/apache/arrow/gandiva/evaluator/JniLoader.java
@@ -24,10 +24,14 @@
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
+import java.util.Collections;
import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import com.sun.jna.Library;
+import com.sun.jna.NativeLibrary;
+import com.sun.jna.Platform;
import org.apache.arrow.gandiva.exceptions.GandivaException;
/**
@@ -73,6 +77,9 @@ private static void loadGandivaLibraryFromJar(final String tmpDir)
final String libraryToLoad =
getNormalizedArch() + "/" + System.mapLibraryName(LIBRARY_NAME);
final File libraryFile = moveFileFromJarToTemp(tmpDir, libraryToLoad, LIBRARY_NAME);
+ if (Platform.isLinux()) {
+ NativeLibrary.getInstance(libraryFile.getAbsolutePath(), Collections.singletonMap(Library.OPTION_OPEN_FLAGS, new Integer(257)));
+ }
System.load(libraryFile.getAbsolutePath());
}