НЕТ opencv_java300 в java.library.path
Заранее спасибо..
У меня есть проект, который использует opencv-300.jar в качестве внешней библиотеки. Я пробовал это в затмении и в natBeans. В обоих случаях он работает успешно, когда я запускаю свой проект из самой IDE. Я хочу, чтобы мой проект экспортировал его как исполняемый (или исполняемый) фляга. Я поместил свой файл opencv_java300.dll в исходную папку с основным файлом Java и дал его имя в
System.loadLibrary("opencv_java300");
Я поместил opencv-300.jar во внешние библиотеки jar и все остальные файлы, которые нужны в основной программе. он работает успешно при запуске из IDE, но когда я создаю исполняемый файл JAR, он показывает ошибку
Exception in thread "main" java.lang.UnsatisfiedLinkError: no
opencv_java300 in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at CropFaceImage.main(CropFaceImage.java:27)
Пожалуйста, скажите мне, есть ли способ дать java.library.path в самой программе. Мой проект успешно работает, даже если я удалил путь к файлу opencv_java300.dll во внешней библиотеке.
5 ответов
Я попытался передать команду, которая содержит путь для opencv, но я не нашел другого пути. Каким-то образом я попробовал кое-что, что создало мою флягу, и это должным образом работает. Я скопировал файл opencv_java300.dll и поместил его в каталог, который находится рядом с моим файлом jar, и сделал то же самое для всех вспомогательных файлов. Я использовал следующий код, чтобы сделать это.
String opencvpath = System.getProperty("user.dir") + "\\files\\";
String libPath = System.getProperty("java.library.path");
System.load(opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll");
Вы можете использовать аргумент командной строки, как показано ниже, и вызвать свой класс, который имеет основной
java -Djava.library.path="Folder which contains your dll" ....
У меня была та же проблема, я решил ее, переключив системную библиотеку JRE. Кажется, что проблема возникает только при использовании jre1.8.0_65. У меня все хорошо работало с jre1.8.0_25, jre1.8.0.45 и jre1.8.0.66
Я решил свою проблему, когда настроил собственную библиотеку в Eclipse. Вам нужно выбрать библиотеку со ссылкой на вашу платформу ОС.
Посмотрите здесь: добавление openCV в путь сборки Java в Eclipse.
Я смог исправить ошибку, удалив System.loadLibrary("opencv_java300");
Из кода и добавления файла jar в путь к классам в моем build.xml:
<jar destfile="program.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="com.src.program"/>
<attribute name="Class-path" value="opencv-300.jar"/>
</manifest>
</jar>