Ошибка при использовании Attach Api
При использовании приложения API в Eclipse в консоли выдается ошибка.
Чтобы использовать API присоединения, я пошел в установленную JRE в Eclipse, а затем с помощью опции редактирования включил tools.jar в опцию external jars в текущей JRE.
Но он выдает следующую ошибку, когда я пытаюсь выполнить простую программу, такую как
java.lang.UnsatisfiedLinkError: нет присоединения в java.library.path com.sun.tools.attach.AttachNotSupportedException: на com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:190) не установлено ни одного поставщика (VirtualMachine.jMA:190) в dynamicLoading..main(VMAttach.java:17)
Это простая программа выполняется. импорт java.io.IOException;
import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;
public class VMAttach {
public static void main(String[] args) {
try {
VirtualMachine vm = VirtualMachine.attach("6832");
} catch (AttachNotSupportedException e) {
System.out.println("This error");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Упомянутый 6832 идентификатор процесса имеет Java-приложение, работающее в системе
При смене установленного jre на jdk выдается следующая ошибка
Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: jvm.dll not loaded by target process
at sun.tools.attach.WindowsVirtualMachine.<init>(WindowsVirtualMachine.java:46)
at sun.tools.attach.WindowsAttachProvider.attachVirtualMachine(WindowsAttachProvider.java:52)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:195)
at dynamicLoadingTest.VMAttach.main(VMAttach.java:17)
3 ответа
На самом деле, эта проблема возникает, когда в вашей системе есть разные jdks, и все они включены в путь к классам.
Для меня решение было поставить attach.dll
из JDK (той же версии, что и ваш JRE) в JRE bin
каталог.
Я попробовал то же самое с JDK1.7, и он работает нормально. С JDK1.6 проблема остается.