gpt4 book ai didi

java - 修复 : java. lang.UnsatisfiedLinkError : no attach in java. library.path

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:19 25 4
gpt4 key购买 nike

我正在尝试使用 Attach API 获取在我的机器上运行的所有虚拟机的列表。

这是我使用的代码:

import java.lang.reflect.Field;
import java.util.List;
import com.sun.tools.attach.*;

public class JVMListManager
{
static String pathToAdd = "C:/Program Files/Java/jdk1.7.0_03/jre/bin/attach.dll";
public static void setLibraryPath(String path) throws Exception {
System.setProperty( "java.library.path", pathToAdd );

Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);
}

private void listActiveVM()
{
List<VirtualMachineDescriptor> vm = VirtualMachine.list();
int i= 1;
for(VirtualMachineDescriptor vmD : vm)
{
System.out.println(i + ". " + vmD.displayName());
i++;
}
}

public static void main(String[] args) throws Exception
{
setLibraryPath(pathToAdd);

JVMListManager jvmListManager = new JVMListManager();
jvmListManager.listActiveVM();
}
}

错误:

java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach.WindowsAttachProvider could not be instantiated: java.lang.UnsatisfiedLinkError: no attach in java.library.path

请告诉我可以使用哪些方法来解决此问题。

我也尝试过使用 System.load(pathToAdd);我也提到了这个 Blog post , 但它不起作用。 :'(

最佳答案

你需要:

设置 PATH=%PATH%;C:/Program Files/Java/jdk1.7.0_03/jre/bin/(在 Windows 上)

export LD_LIBRARY_PATH=path/to/your/library/dir/(在 Linux 或 OSX 上)

在启动 jvm 之前遵守本地库的路径。

我认为 System.setProperty( "java.library.path", pathToAdd ); 没有工作;这可能是问题的原因。

关于java - 修复 : java. lang.UnsatisfiedLinkError : no attach in java. library.path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com