TL; Я недавно обновился до более новой версии Java API Z3, и теперь я не могу загрузить libz3java.dylib, потому что зависимость libz3.dylib игнорируется.Z3 Java API не обнаруживает libz3.dylib
Я использую Z3 version 4.4.1. После компиляции проекта и сдачи libz3java.dylib в java.library.path
, я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no libz3java in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at com.microsoft.z3.Native.<clinit>(Native.java:14)
at com.microsoft.z3.Global.ToggleWarningMessages(Global.java:86)
Библиотека находится в правильном пути, хотя. При чтении файла Native.java
в com.microsoft.z3.jar (с автогенерированным here) мы видим, что это фактически вызванный отказ System.loadLibrary("z3java");
.
Так что я попытался загрузки библиотеки вручную:
public static void main(String[] args) {
System.load("/tmp/z3/build/libz3java.dylib");
}
В результате я получил:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /private/tmp/z3/build/libz3java.dylib:
dlopen(/private/tmp/z3/build/libz3java.dylib, 1):
Library not loaded: libz3.dylib
Referenced from: /private/tmp/z3/build/libz3java.dylib
Reason: image not found
Ошибка указывает на то, что libz3.dylib должен быть загружен первым. Поэтому я попытался загрузить его вручную.
public static void main(String[] args) {
System.load("/tmp/z3/build/libz3.dylib");
System.load("/tmp/z3/build/libz3java.dylib");
}
Неожиданно это дает ту же ошибку. Нагрузка libz3.dylib преуспевает, но не имеет никакого эффекта.
- Z3: 4.4.1
- Java Версия: 1.8.0_25-b17
- ОС: OSX 10.11.1 (El Capitan)
Большое спасибо за вашу помощь.
Выполнено: https://github.com/Z3Prover/z3/issues/294 – Eipifi