TL;DR: я недавно обновился до более новой версии Z3 Java API и теперь не могу загрузить libz3java.dylib, так как зависимость libz3.dylib игнорируется.
Я использую Z3 версии 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 (автоматически созданный здесь), мы видим, что на самом деле это вызов 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 (Эль-Капитан)
Большое спасибо за Вашу помощь.