2017-01-06 11 views
0

Я пытаюсь использовать библиотеку JNA в своем проекте.Использование библиотеки jna в приложении, а не аплета

Моя ситуация выглядит следующим образом:

У меня есть апплет, который показывает вход камеры.

При запуске апплета с помощью команды Запуск апплета я получаю правильный результат:

an applet that shows the camera input

Если удалить jna.jar из пути сборки он дает мне ошибку, как ожидалось.

Если я переименую каталог родных плагинов, он дает мне ошибку, как ожидалось.

Если я пытаюсь запустить все приложение, я получаю ошибку:

GStreamer-WARNING **: Failed to load plugin C:/Users/aaa/Desktop/bbb/ccc/video/library/\windows64\plugins\libgstwavparse.dll on 30+ dlls

Путь C:/Users/aaa/Desktop/bbb/ccc/video/library/\windows64\plugins\ является один, что если переименован делает аварии апплета (так правильно) один и jna.jar и библиотека, используемая JNA, импортируется в каждый задействованный проект: корневой проект, с которого запускается приложение, и проект представления, который создает экземпляр камеры с апплетом.

Как предполагалось ранее, я попытался

System.setProperty("jna.library.path","C:/Users/aaa/Desktop/bbb/ccc/video/library/windows64/plugins/"); 

и т.д ... во всех возможных формах, чтобы ссылаться на правильный каталог, но безрезультатно.

В библиотеке есть 3 rd участник библиотеки и на самом деле должен работать.

Проблемы могут быть в моей полной нехватке знаний о JNA и/или Gstreamer или даже о некоторых основах на данный момент.

Есть ли обходной путь? Почему апплет и приложение, которое создает экземпляр апплета, работают по-разному при обращении к библиотекам DLL ... или Gstreamer DLL ... или в компоненте Processing 2.2.1 включены Gstreamer DLL?

+0

Я не очень хорошо понимаю ваш вопрос лично, но является ли это полным сообщением об ошибке? – aikeru

+0

после предупреждений при попытке загрузить плагины я получаю сообщение java.lang.IllegalArgumentException: Нет такой фабрики Gstreamer: appsink witch должно быть следствием невозможности загрузки подключаемых модулей. –

+0

Если вы используете eclipse, посмотрите [этот ответ] (http://stackoverflow.com/questions/15667973/how- в-получить мою-программу-работай-вне-из-затмения/15688065 # 15688065). Единственное другое дополнение после экспорта - явно указать JVM, где он должен искать родные библиотеки java, используя '' 'java.library.path''' (например, что-то вроде этого' '' java -jar/path/to/your/process-applet.jar -cp/path/to/exported-libs -Djava.library.path =/path/to/jni-jna-libs''') –

ответ

0

ОК, мне удалось заставить его работать таким образом: если я напишу главный текст непосредственно в проекте «Вид» и добавлю апплет на панель, он теперь работает ... так что решает некоторые проблемы (апплет был в панели даже прежде всего, в любом случае) ... тот же самый фиктивный основной предупреждает, как и раньше, при запуске под корневым проектом: не удалось загрузить плагин: «правильный путь»

Как уже говорилось, у меня есть проект root и проект вида (N Vproject, чтобы быть откровенным), видео-библиотека включена в VProject, а библиотеки DLL - это ресурсы проекта. Возможно ли, что запуск приложения из основного проекта что-то (например, различные системные переменные) вызывает проблемы? Просто не зная вопроса, я предварительно добавил и удалил (и комбинации) все, что можно было добавить к платформе jna и к jna-using-video lib для обоих проектов.

Я действительно забочусь о расцеплении в этом случае, потому что это своего рода запись рамки, и это основное ограничение. Любое понимание?