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は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 の絶対パスへの参照を修正したほうがいいと思いますが、修正方法がわかりません。これについて何かアドバイスをいただけますか?