From 9bbb59695acd9240f889686c3b943473137a6203 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Thu, 29 Oct 2020 14:59:34 +0100 Subject: [PATCH] Update LibraryVersion.java, LibraryVersion.java, and 3 more files... --- .../tdlight/common/utils/LibraryVersion.java | 8 ++--- .../tdlight/common/utils/LibraryVersion.java | 8 ++--- .../it/tdlight/common/utils/LoadLibrary.java | 33 +++++++++++++++---- tdlib/pom.xml | 2 +- tdlight/pom.xml | 2 +- 5 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java b/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java index e25f4f1..7fdca16 100644 --- a/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java +++ b/src/main/java-templates-tdlib/it/tdlight/common/utils/LibraryVersion.java @@ -2,8 +2,8 @@ package it.tdlight.common.utils; public final class LibraryVersion { public static final String VERSION = "${project.version}"; public static final String IMPLEMENTATION_NAME = "tdlib"; - public static final Class LINUX_AMD64_CLASS = it.tdlight.jni.tdlib.linux.amd64.LoadLibrary.class; - public static final Class LINUX_AARCH64_CLASS = it.tdlight.jni.tdlib.linux.aarch64.LoadLibrary.class; - public static final Class WINDOWS_AMD64_CLASS = it.tdlight.jni.tdlib.win.amd64.LoadLibrary.class; - public static final Class OSX_AMD64_CLASS = it.tdlight.jni.tdlib.osx.amd64.LoadLibrary.class; + public static final String LINUX_AMD64_CLASS = "it.tdlight.jni.tdlib.linux.amd64.LoadLibrary"; + public static final String LINUX_AARCH64_CLASS = "it.tdlight.jni.tdlib.linux.aarch64.LoadLibrary"; + public static final String WINDOWS_AMD64_CLASS = "it.tdlight.jni.tdlib.win.amd64.LoadLibrary"; + public static final String OSX_AMD64_CLASS = "it.tdlight.jni.tdlib.osx.amd64.LoadLibrary"; } \ No newline at end of file diff --git a/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java b/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java index 8a34052..41c8a7e 100644 --- a/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java +++ b/src/main/java-templates-tdlight/it/tdlight/common/utils/LibraryVersion.java @@ -2,8 +2,8 @@ package it.tdlight.common.utils; public final class LibraryVersion { public static final String VERSION = "${project.version}"; public static final String IMPLEMENTATION_NAME = "tdlight"; - public static final Class LINUX_AMD64_CLASS = it.tdlight.jni.tdlight.linux.amd64.LoadLibrary.class; - public static final Class LINUX_AARCH64_CLASS = it.tdlight.jni.tdlight.linux.aarch64.LoadLibrary.class; - public static final Class WINDOWS_AMD64_CLASS = it.tdlight.jni.tdlight.win.amd64.LoadLibrary.class; - public static final Class OSX_AMD64_CLASS = it.tdlight.jni.tdlight.osx.amd64.LoadLibrary.class; + public static final String LINUX_AMD64_CLASS = "it.tdlight.jni.tdlight.linux.amd64.LoadLibrary"; + public static final String LINUX_AARCH64_CLASS = "it.tdlight.jni.tdlight.linux.aarch64.LoadLibrary"; + public static final String WINDOWS_AMD64_CLASS = "it.tdlight.jni.tdlight.win.amd64.LoadLibrary"; + public static final String OSX_AMD64_CLASS = "it.tdlight.jni.tdlight.osx.amd64.LoadLibrary"; } \ No newline at end of file diff --git a/src/main/java/it/tdlight/common/utils/LoadLibrary.java b/src/main/java/it/tdlight/common/utils/LoadLibrary.java index a89f4fb..8a22c92 100644 --- a/src/main/java/it/tdlight/common/utils/LoadLibrary.java +++ b/src/main/java/it/tdlight/common/utils/LoadLibrary.java @@ -24,6 +24,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.concurrent.ConcurrentHashMap; +import java.lang.reflect.InvocationTargetException; /** * The class to load the libraries needed to run Tdlib @@ -104,29 +105,49 @@ public class LoadLibrary { case linux: switch (arch) { case amd64: - classForResource = LibraryVersion.LINUX_AMD64_CLASS; + try { + classForResource = Class.forName(LibraryVersion.LINUX_AMD64_CLASS); + } catch (ClassNotFoundException e) { + // not found + } break; case aarch64: - classForResource = LibraryVersion.LINUX_AARCH64_CLASS; + try { + classForResource = Class.forName(LibraryVersion.LINUX_AARCH64_CLASS); + } catch (ClassNotFoundException e) { + // not found + } break; } break; case osx: if (arch == Arch.amd64) { - classForResource = LibraryVersion.OSX_AMD64_CLASS; + try { + classForResource = Class.forName(LibraryVersion.OSX_AMD64_CLASS); + } catch (ClassNotFoundException e) { + // not found + } } break; case win: if (arch == Arch.amd64) { - classForResource = LibraryVersion.WINDOWS_AMD64_CLASS; + try { + classForResource = Class.forName(LibraryVersion.WINDOWS_AMD64_CLASS); + } catch (ClassNotFoundException e) { + // not found + } } break; } if (classForResource == null) { throw new IOException("Native libraries for platform " + os + "-" + arch + " not found!"); } - String libPath = createPath("libs", os.name(), arch.name(), libname) + getExt(os); - InputStream libInputStream = classForResource.getResourceAsStream(libPath); + InputStream libInputStream; + try { + libInputStream = (InputStream) this.getClass().getDeclaredMethod("getLibraryAsStream").invoke(InputStream.class); + } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + throw new IOException("Native libraries for platform " + os + "-" + arch + " not found!", e); + } if (Files.notExists(tempFile)) { Files.copy(libInputStream, tempFile); } diff --git a/tdlib/pom.xml b/tdlib/pom.xml index 6df0544..7dd22d4 100644 --- a/tdlib/pom.xml +++ b/tdlib/pom.xml @@ -8,7 +8,7 @@ UTF-8 0-SNAPSHOT - 3.0.123 + 3.0.125 diff --git a/tdlight/pom.xml b/tdlight/pom.xml index dfe6aa2..087550a 100644 --- a/tdlight/pom.xml +++ b/tdlight/pom.xml @@ -8,7 +8,7 @@ UTF-8 0-SNAPSHOT - 3.0.123 + 3.0.125