Как решить эту проблему JNA? - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть приложение, которое использует JNA и получает аудио и видео.Это работает в моей коробке Linux.Но когда я тестирую это в Windows.Это просто никогда не работает.Поскольку я все еще учусь, я буду признателен за ваше предложение, как это исправить, я уже потратил несколько дней и недель только на то, чтобы разобраться с этим, но просто не понимаю, почему JAVA не работает просто, это кроссплатформенная.Зачем ему снова требовать системный путь или другую конфигурацию.

Теперь я полностью потерян, почему он работает в Linux и не работает в Windows XP?Как я могу запустить его тогда?

Inside the lib direcotry i have my JNA and Audio libraries.
C:\Documents and Settings\test\Desktop\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 680F-0963

 Directory of C:\Documents and Settings\test\Desktop\test

19/12/2010  22:09    <DIR>          .
19/12/2010  22:09    <DIR>          ..
19/12/2010  22:09            51.791 Audio.jar
19/12/2010  22:09    <DIR>          lib
               1 File(s)         51.791 bytes
               3 Dir(s)     487.002.112 bytes free



Now trying to run Audio.jar, gets Fail 1:

C:\Documents and Settings\test\Desktop\test>java -Djava.library.path=~/jni -jar
Audio.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load librar
y gstreamer-0.10
        at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java:83)
        at org.gstreamer.lowlevel.GNative.loadLibrary(GNative.java:43)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:42)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:39)
        at org.gstreamer.Gst.<clinit>(Gst.java:59)
        at video.MyVideo.simpletest(MyVideo.java:31)
        at sipphone.MainApplet.run(MainApplet.java:58)
        at sipphone.MainApplet.main(MainApplet.java:43)


Fail 2:
C:\Documents and Settings\test\Desktop\test>java -Djna.library.path=. -jar Audio
.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load librar
y gstreamer-0.10
        at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java:83)
        at org.gstreamer.lowlevel.GNative.loadLibrary(GNative.java:43)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:42)
        at org.gstreamer.lowlevel.GstNative.load(GstNative.java:39)
        at org.gstreamer.Gst.<clinit>(Gst.java:59)
        at video.MyVideo.simpletest(MyVideo.java:31)
        at sipphone.MainApplet.run(MainApplet.java:58)
        at sipphone.MainApplet.main(MainApplet.java:43)

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

Вам нужно будет установить DLL или, по крайней мере, указать путь к вашей библиотеке JNA, как указали другие.

Это добавляет дополнительную зависимость от Windows. Это будет дополнительная зависимость от Linux, но gstreamer предустановлен вашим дистрибутивом. Я столкнулся с этой же проблемой, когда делал что-то, чтобы использовать порт USB из Java.

Единственное решение, которое я знаю, чтобы избежать DLL, - это иметь вторую версию кода, которую вы могли бы вызывать в Windows, которая использовала бы только Win32 (то есть то, что поставляется с Windows), но это было бы очень большим делом. .

1 голос
/ 26 января 2016

при попытке запустить mediarenderer из пакета cling у меня была такая же ошибка на windows xp.я получил права libgstreamer-0.10.so из пакета GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msi, найденного в https://code.google.com/archive/p/ossbuild/downloads

после установки (переменные окружения PATH (для зависимостей) и OSSBUILD_GSTREAMER_DIR набор), в приглашении янаконец-то смог запустить mediarenderer, используя следующий синтаксис для представления пути к lib:

Z:\Downloads\cling-distribution-2.1.0\cling-distribution-2.1.0\mediarenderer\target>java -Djna.library.path="C:\Program Files\OSSBuild\GStreamer\v0.10.7\bin" -jar cling-mediarenderer-2.1.0-standalone.jar

надеюсь, это поможет в качестве отправной точки!

0 голосов
/ 20 декабря 2010

Для сбоя 1: я не верю, что синтаксис ~/ будет работать в Windows.Попробуйте %HOME%\ вместо этого. расширение тильды происходит в Bash, поэтому в Windows все немного по-другому.

Для сбоя 2: не похоже, что DLL находится в вашей тестовой директории, и вы 'переустанавливая jna.library.path на ..

Если .dll находятся в вашем каталоге lib, то не следует ли указывать пути к этому каталогу вместо ~/jni и .?

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