Я использую Java 7 на Windows 7 и пытаюсь использовать Java ЮНА (Java Native Access) (4.2.2) [ссылка: https://github.com/java-native-access/jna] к предоставить доступ к языковой библиотеке языка C. Я сделал это в системе Linux и не обнаружил проблем с поиском и загрузкой библиотеки.Окна, ЮНА: Не удается загрузить исходную библиотеку - UnsatisfiedLinkError
Я использую предложенную методику установки системного свойства jna.library.path на путь, где находится библиотека. Как уже упоминалось выше, это работает на Linux, но в Windows я не могу заставить его находить и загружать библиотеку.
На платформе Windows библиотека поставляется как с 32, так и с 64-разрядными вариантами (я пытаюсь использовать 32-разрядную версию) с обоими .lib и DLL-файлами.
Я также установить свойство системы jna.debug_load и jna.debug_load.jna к правда как было предложено, чтобы посмотреть, как ЮНА делает свое дело.
Я попытался следующие без толку:
- System.setProperty ("jna.library.path", "C: \ Program Files (x86) \ VMware \ VMware VIX"); (Путь в стиле Windows)
- System.setProperty ("jna.library.path", "C:/Program Files (x86)/VMware/VMware VIX"); (Путь в стиле UNIX)
- Я поместил библиотеку в путь, в котором нет пробелов.
- Я добавил имя библиотеки на путь (с расширением файла и без него). Например. "C: \ Program Files (x86) \ VMware \ VMware VIX \ VixAllProductsDyn". (VixAllProductsDyn.dll)
Когда я пытаюсь, я могу просмотреть информацию об отладке на консоли Java. Как ни странно, он пытается точно указать, где находится файл библиотеки - и еще не нашел его.
Если кто-то столкнулся с этим и ничего не знает о решении проблемы, это было бы очень признательно.
Trying (via loadLibrary) jnidispatch
Looking in classpath from [email protected] for /com/sun/jna/win32-x86-64/jnidispatch.dll
Found library resource at jar:file:/C:/Users/jo24447/.m2/repository/net/java/dev/jna/jna/4.2.2/jna-4.2.2.jar!/com/sun/jna/win32-x86-64/jnidispatch.dll
Trying C:\Users\jo24447\AppData\Local\Temp\jna--734724592\jna8544680981267090708.dll
Found jnidispatch at C:\Users\jo24447\AppData\Local\Temp\jna--734724592\jna8544680981267090708.dll
Looking for library 'VixAllProductsDyn'
Adding paths from jna.library.path: C:\Program Files (x86)\VMware\VMware VIX
Trying C:\Program Files (x86)\VMware\VMware VIX\VixAllProductsDyn.dll
Adding system paths: []
Trying C:\Program Files (x86)\VMware\VMware VIX\VixAllProductsDyn.dll
Looking for lib- prefix
Trying libVixAllProductsDyn.dll
Looking in classpath from [email protected] for VixAllProductsDyn
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'VixAllProductsDyn': Native library (win32-x86-64/VixAllProductsDyn.dll) not found in resource path ([file:/C:/Users/jo24447/luna_workspace/VMUtil/vm-util/target/classes/, file:/C:/Users/jo24447/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar, file:/C:/Users/jo24447/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar, file:/C:/Users/jo24447/.m2/repository/org/slf4j/slf4j-log4j12/1.7.2/slf4j-log4j12-1.7.2.jar, file:/C:/Users/jo24447/.m2/repository/net/java/dev/jna/jna/4.2.2/jna-4.2.2.jar, file:/C:/Users/jo24447/.m2/repository/net/java/dev/jna/jna-platform/4.2.2/jna-platform-4.2.2.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:277)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:403)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:342)
at edu.mit.ll.oms.security.vm.VIXLibrary.<clinit>(VIXLibrary.java:24)
at edu.mit.ll.oms.security.vm.test.QuickTest.main(QuickTest.java:16)
Имеет ли библиотека какие-либо дополнительные зависимости? – technomage
BTW, Java (и windows) принимает слэши в качестве разделителей в именах путей. – technomage