我有使用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)
答案 0 :(得分:2)
您需要安装DLL,或至少在其他人指出的JNA库路径中。
它确实在Windows上添加了额外的依赖。这将是对Linux的额外依赖,但gstreamer是由您的发行版预安装的。当我在使用Java的USB端口时,我遇到了同样的问题。
我知道避免DLL的唯一解决方案是拥有可以在Windows上调用的第二个版本的代码,它只能使用Win32的东西(即Windows附带的东西),但这将是一个非常大的事业
答案 1 :(得分:1)
尝试从cling包运行mediarenderer,我在windows xp上遇到了同样的错误。 我从https://code.google.com/archive/p/ossbuild/downloads
中找到的libgstreamer-0.10.so
包中找到了正确的GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msi
一旦安装(环境变量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
希望这有助于作为一个起点!
答案 2 :(得分:-2)
对于失败1:我不相信~/
语法可以在Windows上运行。请尝试使用%HOME%\
。 tilde expansion发生在Bash中,因此Windows中的情况有所不同。
对于失败2:看起来.dll不在您的测试目录中,并且您将jna.library.path
设置为.
。
如果.dll位于lib目录中,那么路径不应设置为该目录,而不是~/jni
和.
吗?