【问题标题】:Extract DLL from Jar [duplicate]从 Jar 中提取 DLL [重复]
【发布时间】:2016-04-03 02:49:05
【问题描述】:

我有一个项目,其资源目录与此类似:

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

我希望能够使用System.load() 加载MyDll.dll。我读到能够从 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

【问题讨论】:

    标签: java io


    【解决方案1】:
        InputStream input = this.getClass().getClassLoader().getResourceAsStream("MyDll.dll");
    

    【讨论】:

    • 不幸的是,这不起作用。它仍然返回 null。
    • @grandmind1 尝试使用类加载器,您确定该文件存在吗? )
    • 只有代码的答案通常没有帮助。添加一些解释。
    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2018-07-23
    • 2016-01-03
    相关资源
    最近更新 更多