小编Uma*_*sai的帖子

修复:java.lang.UnsatisfiedLinkError:java.library.path中没有附加

我试图使用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 virtual-machine

6
推荐指数
1
解决办法
2万
查看次数

为什么我们不应该在catch块中进行清理?

可能重复:
为什么在Try ... Catch中使用Finally

为什么我们不应该使用catch块来清理代码?

我没有那么多使用错误处理技术,但我现在开始将它们用于几乎每个程序.关于时间

因此,在浏览文章/文档时,我遇到了finally块.

并且正如它所暗示的那样,无论是否存在异常,finally块都会运行(当然,如果JVM或PC被强制关闭,它将无法运行).最后,块通常用于清理代码(资源).

所以基本上,如果我的代码没有异常,那么我为什么要清理代码呢.我不应该将清理代码放在catch块而不是finally块中.

我试着寻找类似的问题,但似乎没有人问过这个问题.所以我继续前进并提出了一个问题:D

java exception-handling try-catch-finally

2
推荐指数
1
解决办法
498
查看次数