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 (El Capitan)
Благодаря ви много за вашата помощ.