update lib name

pull/1787/head
hengyunabc 4 years ago
parent 3a044bc9e0
commit 3672c2c7a6

@ -25,7 +25,7 @@
<properties>
<os_name>macos</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>libArthasJniLibrary.dylib</lib_name>
<lib_name>libArthasJniLibrary-x64.dylib</lib_name>
</properties>
</profile>
<profile>
@ -39,7 +39,7 @@
<properties>
<os_name>macos</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>libArthasJniLibrary.dylib</lib_name>
<lib_name>libArthasJniLibrary-amd64.dylib</lib_name>
</properties>
</profile>
@ -55,7 +55,7 @@
<properties>
<os_name>linux</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>libArthasJniLibrary.so</lib_name>
<lib_name>libArthasJniLibrary-x64.so</lib_name>
</properties>
</profile>
<profile>
@ -69,7 +69,7 @@
<properties>
<os_name>linux</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>libArthasJniLibrary.so</lib_name>
<lib_name>libArthasJniLibrary-amd64.so</lib_name>
</properties>
</profile>
@ -85,7 +85,7 @@
<properties>
<os_name>windows</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>ArthasJniLibrary.dll</lib_name>
<lib_name>libArthasJniLibrary-x64.dll</lib_name>
</properties>
</profile>
<profile>
@ -99,7 +99,7 @@
<properties>
<os_name>windows</os_name>
<os_arch_option>-m64</os_arch_option>
<lib_name>ArthasJniLibrary.dll</lib_name>
<lib_name>libArthasJniLibrary-amd64.dll</lib_name>
</properties>
</profile>
</profiles>

@ -2,6 +2,8 @@ package arthas;
import java.util.ArrayList;
import com.taobao.arthas.common.OSUtils;
/**
* @author ZhangZiCheng 2021-02-12
* @author hengyunabc 2021-04-26
@ -14,6 +16,24 @@ public class Vmtool implements VMtoolMXBean {
*/
public final static String JNI_LIBRARY_NAME = "ArthasJniLibrary";
private static String libName = null;
static {
if (OSUtils.isMac()) {
libName = "libArthasJniLibrary-x64.dylib";
}
if (OSUtils.isLinux()) {
libName = "libArthasJniLibrary-x64.so";
if (OSUtils.isArm32()) {
libName = "libArthasJniLibrary-arm.so";
} else if (OSUtils.isArm64()) {
libName = "libArthasJniLibrary-aarch64.so";
}
}
if (OSUtils.isWindows()) {
libName = "libArthasJniLibrary-x64.dll";
}
}
private static Vmtool instance;
private Vmtool() {
@ -38,6 +58,10 @@ public class Vmtool implements VMtoolMXBean {
return instance;
}
public static String detectLibName() {
return libName;
}
/**
* jni-libOK
*/

@ -27,7 +27,7 @@ public class VmtoolTest {
String path = Vmtool.class.getProtectionDomain().getCodeSource().getLocation().getPath();
System.err.println(path);
String libPath = new File(path, System.mapLibraryName(Vmtool.JNI_LIBRARY_NAME)).getAbsolutePath();
String libPath = new File(path, Vmtool.detectLibName()).getAbsolutePath();
Vmtool vmtool = Vmtool.getInstance(libPath);
//调用native方法获取已加载的类不包括小类型(如int)

Loading…
Cancel
Save