2010-12-20 206 views
0

我有使用JNA并获取音频和视频的应用程序。它在我的Linux机器中运行。但是,当我在Windows中测试它。它只是从来没有工作。因为我还在学习,所以我会很感激你的建议,如何解决它,我已经花了几天和几周才解决,但没有得到这个为什么JAVA不能简单地工作,它是一个跨平台。为什么它应该再次需要系统路径或其他配置。如何解决这个JNA问题?

我现在完全失去了,它为什么在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) 
+2

我可能会说明显然,但是您是否还记得为Windows构建库?那么,你的'lib'目录中是否有'gstreamer-0.10.dll'? – 2010-12-20 18:28:35

+1

这就是我在lib目录中的C:\ Documents and Settings \ test \ Desktop \ test \ lib 19/12/2010 22:09

。 19/12/2010 22:09 .. 19/12/2010 22:09 806.222 gstreamer-java-1.4.jar 19/12/2010 22:09 629.821 jna-3.0.4.jar 2 File( s)1.436.043 bytes 2 dir(s)486.473.728 bytes free – YumYumYum 2010-12-20 18:39:06

+1

我对gstreamer并不熟悉,但从第一印象来看,您应该以某种方式在您的Windows机器上安装GStream,并指出'jna.library .path'(可能不是'java.library.path')到它保存DLL的位置。那,或者一起发运DLL。 – 2010-12-20 18:55:19

回答

2

您需要安装DLL,或者至少在其他人指出的JNA库路径中。

它确实增加了对Windows的额外依赖。这将是对Linux的额外依赖,但gstreamer是由你的发行版预装的。当我正在使用Java的USB端口时,遇到了同样的问题。

我知道的避免DLL的唯一解决方案是在Windows上只能使用Win32的东西(即与Windows一起发布的东西)的代码的第二个版本,但这将是一个非常大的承诺。

+1

感谢您的信息。尽管如此,我仍然看到很多麻烦。我可以为Linux/Windows做一个基于Web浏览器的应用程序。但是如果我打算继续使用GStream并将92赫兹转换为192赫兹音频传输,则不适用于Mac。我在想我的项目将会失败,为了使WEB浏览器取得成功。如果我必须使48赫兹以上。 – YumYumYum 2010-12-20 20:44:22

-2

对于失败1:我不相信~/语法将在Windows上工作。改为尝试%HOME%\。在Bash中发生了tilde expansion,所以Windows中的事情有点不同。

对于失败2:它看起来不像.dll在您的测试目录中,并且您将jna.library.path设置为.

如果.dll在您的lib目录中,那么不应该将路径设置为该目录,而不是~/jni.

+0

如果我有.jar为什么我又需要.dll?为什么Audio.jar然后执行,但没有为JNA的.jar? – YumYumYum 2010-12-20 19:04:22

+1

即使我做它的工作原理,但它不会加载JNA?但是它是一个来自Linux的jar,我必须要把DLL放在那里。 – YumYumYum 2010-12-20 19:08:58

+1

尝试过但没有运气,失败。 \ test> java -Djna.library.path = lib -jar Aud io.jar java.lang.UnsatisfiedLinkError:无法加载图书馆 y gstreamer-0.10 at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java: 83) – YumYumYum 2010-12-20 19:52:17

1

试图从保持包运行mediarenderer,我在Windows XP上有相同的错误。 我从包GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msilibgstreamer-0.10.sohttps://code.google.com/archive/p/ossbuild/downloads

一旦安装(环境变量PATH(依赖关系)和OSSBUILD_GSTREAMER_DIR集), 在提示中发现,我终于可以使用下面的语法来介绍LIB的运行mediarenderer路径:

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 

希望这有助于作为一个起点!