2010-12-20 152 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 

希望這有助於作爲一個起點!