2015-12-29 5 views
0

У меня есть проект создать с каталогом ресурсов похожее на это:Извлечение DLL из Jar

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

Я хочу, чтобы иметь возможность загружать MyDll.dll с помощью System.load(). Я читал, что, чтобы сделать это из банки, мне нужно сначала извлечь 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 в папке ресурсов?

ответ

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

К сожалению, это не сработало. Он по-прежнему возвращает null. – Panda

+0

@ grandmind1 попробуйте с загрузчиком классов, и вы уверены, что файл существует?) –

+0

Только ответы на код обычно не помогают. Добавьте некоторое объяснение. –

Смежные вопросы