SCIP的JNI错误

时间:2016-01-18 23:53:08

标签: java macos java-native-interface solver scip

我从http://scip.zib.de/#scipoptsuite获得了scip optsuite。 它作为一个独立的程序和python接口工作正常,但是当我运行这个例子时,我遇到了以下JNI错误。

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jscip-0.1.darwin.x86_64.gnu.opt.spx in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at de.zib.jscip.nativ.jni.JniScipLibraryLoader.loadLibrary(JniScipLibraryLoader.java:7)
at JniKnapsack.main(JniKnapsack.java:34)

操作系统是OS X 10.10.5。 我用

编译了JNI
make soplex GMP=false
make scip GMP=false ZIMPLE=false

JNI的lib目录(path-to-scipoptsuite / scip-3.2.0 / interfaces / jni / lib)包含以下内容,并由LD_LIBRARY_PATH引用:

jniinc@ -> /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/include
libjscip-0.1.darwin.x86_64.gnu.opt.spx.so*
libjscip.darwin.x86_64.gnu.opt.so@ -> libjscip-0.1.darwin.x86_64.gnu.opt.spx.so
libjscip.so@ -> libjscip-0.1.darwin.x86_64.gnu.opt.spx.so
liblpispx.darwin.x86_64.gnu.opt.so
libnlpi.cppad.darwin.x86_64.gnu.opt.so
libscip.darwin.x86_64.gnu.opt.so
libsoplex.darwin.x86_64.gnu.opt.so
scip@ -> ../../..
scip.jar
soplex@ -> ../../../../soplex-2.2.0

如果你能给我一个建议,我会很高兴。

根据mueldgog的建议,我将扩展名更改为jnilib。然后发生了另一个错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /.../scipoptsuite-3.2.0/scip-3.2.0/interfaces/jni/lib/libjscip-0.1.darwin.x86_64.gnu.opt.spx.jnilib: dlopen(/.../scipoptsuite-3.2.0/scip-3.2.0/interfaces/jni/lib/libjscip-0.1.darwin.x86_64.gnu.opt.spx.jnilib, 1): Library not loaded: lib/liblpispx-3.2.0.darwin.x86_64.gnu.opt.so
Referenced from: /.../scipoptsuite-3.2.0/scip-3.2.0/interfaces/jni/lib/libjscip-0.1.darwin.x86_64.gnu.opt.spx.jnilib
Reason: image not found

otools说:

Load command 11
      cmd LC_LOAD_DYLIB
  cmdsize 72
     name lib/liblpispx-3.2.0.darwin.x86_64.gnu.opt.so (offset 24)

在我成功运行相同命令的Linux环境中,lld说

liblpispx.linux.x86_64.gnu.opt.so => /.../scipoptsuite-3.2.0/scip-3.2.0/lib/liblpispx.linux.x86_64.gnu.opt.so (0x00002b66b3d35000)

所以我认为我应该修复OS X上绝对路径的引用,但不知道如何修复它。 你能为此提出任何建议吗?

0 个答案:

没有答案