Skip to content

extractRegistered prompts java.io.FileNotFoundException for extracted dependency #29

Open
@cafhach

Description

@cafhach

For my native library, I need to extract some native dependencies and I wanted to use NativeLoader.extractRegistered() for that. I put all of them into a jar and listed the sonames in META-INF/lib/linux_64/.
From the log output below I'm guessing that the first dependency libifcoremt.so.5 is successfully extracted to the temporary dir but then something goes wrong. Is the temporary directory deleted too early?

content of META-INF/lib/linux_64/AUTOEXTRACT.LIST

linux_64/libifcoremt.so.5
linux_64/libifport.so.5
linux_64/libimf.so
linux_64/libintlc.so.5
[etc.]

initialization code

  static {    
    try {
      NativeLoader.extractRegistered();
      NativeLibraryUtil.loadNativeLibrary(MyLibJNI.class, "mylib");
    } catch (IOException e) {
      System.err.println("NativeLoader failed to load library. \n" + e);
      System.exit(1);
    }
  }

Log output

5028 [main] DEBUG org.scijava.nativelib.BaseJniExtractor - Extracting libraries registered in classloader sun.misc.Launcher$AppClassLoader@6d6f6e28
5030 [main] DEBUG org.scijava.nativelib.BaseJniExtractor - Extracting libraries listed in file:/home/me/src/trunk/native-intel-runtime/target/classes/META-INF/lib/linux_64/AUTOEXTRACT.LIST
5032 [main] DEBUG org.scijava.nativelib.BaseJniExtractor - Extracting 'file:/home/me/src/trunk/native-intel-runtime/target/classes/natives/linux_64/libifcoremt.so.5' to '/tmp/nativelib-loader_1434383826253268890/linux_64/libifcoremt.so.5'
NativeLoader failed to load library. 
java.io.FileNotFoundException: /tmp/nativelib-loader_1434383826253268890/linux_64/libifcoremt.so.5 (No such file or directory)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions