从Jar中提取DLL

时间:2015-12-29 08:30:53

标签: java io

我设置了一个项目,其资源目录类似于:

[Project]
    [java]
        MainClass
        ...
        ...
    [resources]
        MyDll.dll

我希望能够使用MyDll.dll加载System.load()。我读到能够从jar中执行此操作,我需要先将dll提取到临时位置。我目前正在使用此代码:

try {
    InputStream input = this.class.getResourceAsStream("MyDll.dll");

    byte[] buffer = new byte[1024];
    int read = -1;
    File temp = File.createTempFile("MyDll.dll", "");
    FileOutputStream output = new FileOutputStream(temp);

    while ((read = input.read(buffer)) != -1) {
        output.write(buffer, 0, read);
    }
    output.close();
    input.close();

    System.load(temp.getAbsolutePath());
} catch (Exception e) {
    e.printStackTrace();
}

但是,我认为它找不到文件。 input始终为null。有没有办法在资源文件夹中找到MyDll.dll

1 个答案:

答案 0 :(得分:0)

    InputStream input = this.getClass().getClassLoader().getResourceAsStream("MyDll.dll");