Uma*_*sai 6 java virtual-machine
我试图使用Attach API获取我的机器上运行的所有VM的列表.
这是我正在使用的代码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
java.util.ServiceConfigurationError:com.sun.tools.attach.spi.AttachProvider:无法实例化提供程序sun.tools.attach.WindowsAttachProvider:java.lang.UnsatisfiedLinkError:java.library.path中没有附加
请让我知道我可以用什么方法来解决这个问题.
我也尝试过使用System.load(pathToAdd); 我也提到了这篇博文,但它不起作用.:'(
你需要:
设置PATH =%PATH%; C:/ Program Files / Java / jdk1.7.0_03 / jre / bin /(在Windows上)
导出LD_LIBRARY_PATH =路径/到/您的/库/目录/(在Linux或OSX上)
在启动jvm之前,要遵循本机库的路径。
我认为那没有用System.setProperty( "java.library.path", pathToAdd );;这可能是问题的原因。
| 归档时间: |
|
| 查看次数: |
19370 次 |
| 最近记录: |