From 88b16607357f7fa7c1dcecfbd33c56abd385716a Mon Sep 17 00:00:00 2001 From: Mikhail Lobotskiy Date: Tue, 30 Jul 2024 11:36:47 +0400 Subject: [PATCH] Add another way to load native libraries --- .../doctrenderer/docbuilder.java/make.py | 5 ++--- .../src/java/docbuilder/CDocBuilder.java | 2 +- .../java/docbuilder/CDocBuilderContext.java | 2 +- .../docbuilder/CDocBuilderContextScope.java | 2 +- .../src/java/docbuilder/CDocBuilderValue.java | 2 +- .../docbuilder/utils/NativeLibraryLoader.java | 18 ++++++++++++++++++ .../src/java/docbuilder/utils/Utils.java | 9 --------- .../docbuilder.java/test/Program.java | 2 -- 8 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/NativeLibraryLoader.java delete mode 100644 DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/Utils.java diff --git a/DesktopEditor/doctrenderer/docbuilder.java/make.py b/DesktopEditor/doctrenderer/docbuilder.java/make.py index 36d2cb3cac..9da926c4f9 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/make.py +++ b/DesktopEditor/doctrenderer/docbuilder.java/make.py @@ -15,15 +15,14 @@ if __name__ == "__main__": if file.endswith('.java'): java_files += ' docbuilder/' + file - java_utils_files = ' docbuilder/utils/Utils.java' + java_utils_file = ' docbuilder/utils/NativeLibraryLoader.java' + java_files += java_utils_file # BUILD classes_dir = file_dir + '/build/classes' headers_dir = file_dir + '/src/jni' # build all main Java classes os.system('javac -d ' + classes_dir + (' -h ' + headers_dir if args.headers else '') + java_files) - # build class from utils - os.system('javac -d ' + classes_dir + (' -h ' + headers_dir + '/utils' if args.headers else '') + java_utils_files) # PACKING TO JAR if args.jar: diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilder.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilder.java index 2afbb5a6f8..708c887837 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilder.java +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilder.java @@ -95,7 +95,7 @@ public class CDocBuilder { // Native code static { - System.loadLibrary("docbuilder.jni"); + docbuilder.utils.NativeLibraryLoader.loadLibraries(); } long c_internal = 0; diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java index be744bdad6..68b199f3ee 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContext.java @@ -47,7 +47,7 @@ public class CDocBuilderContext { // Native code static { - System.loadLibrary("docbuilder.jni"); + docbuilder.utils.NativeLibraryLoader.loadLibraries(); } long c_internal = 0; diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java index 8f778426b1..e50742f35f 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderContextScope.java @@ -23,7 +23,7 @@ public class CDocBuilderContextScope { // Native code static { - System.loadLibrary("docbuilder.jni"); + docbuilder.utils.NativeLibraryLoader.loadLibraries(); } long c_internal = 0; diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderValue.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderValue.java index a9578401f4..ba17a2ef53 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderValue.java +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/CDocBuilderValue.java @@ -225,7 +225,7 @@ public class CDocBuilderValue { // Native code static { - System.loadLibrary("docbuilder.jni"); + docbuilder.utils.NativeLibraryLoader.loadLibraries(); } long c_internal = 0; diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/NativeLibraryLoader.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/NativeLibraryLoader.java new file mode 100644 index 0000000000..dcf8d3f526 --- /dev/null +++ b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/NativeLibraryLoader.java @@ -0,0 +1,18 @@ +package docbuilder.utils; + +public class NativeLibraryLoader { + static { + System.loadLibrary("icudt58"); + System.loadLibrary("icuuc58"); + System.loadLibrary("UnicodeConverter"); + System.loadLibrary("kernel"); + System.loadLibrary("kernel_network"); + System.loadLibrary("graphics"); + System.loadLibrary("doctrenderer"); + System.loadLibrary("docbuilder.jni"); + } + + public static void loadLibraries() { + // No-op, just to force the class loading + } +} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/Utils.java b/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/Utils.java deleted file mode 100644 index 91df023c98..0000000000 --- a/DesktopEditor/doctrenderer/docbuilder.java/src/java/docbuilder/utils/Utils.java +++ /dev/null @@ -1,9 +0,0 @@ -package docbuilder.utils; - -public class Utils { - static { - System.loadLibrary("docbuilder.jni_utils"); - } - - public static native void addToPath(String directory); -} diff --git a/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java b/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java index f112c7b779..09ca10747a 100644 --- a/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java +++ b/DesktopEditor/doctrenderer/docbuilder.java/test/Program.java @@ -5,8 +5,6 @@ public class Program { String workDirectory = "C:/Program Files/ONLYOFFICE/DocumentBuilder"; String resultPath = "result.docx"; - docbuilder.utils.Utils.addToPath(workDirectory); - test(workDirectory, resultPath); // Need to explicitly call System.gc() because finalizers might not automatically get called