2012-05-10 21 views
1

我已經查看了一些UnsatisfiedLinkError線程在這裏,沒有什麼似乎很適合我的問題。7 Zip-JBinding UnsatisfiedLinkError

我試圖讓這個API的工作:7ZipBind

但是我有一個問題,不能得到的東西的工作。我像這樣運行它的一些示例代碼從命令行:

C:>java -classpath "/sevenzipTest.jar;/sevenzipjbinding-AllWindows.jar;\sevenzipjbinding.jar" com.poc.sevenzip.SevenZipSimple c:\archive\test.zip

然而,當我嘗試運行它,我得到的錯誤:

Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Users\XXXX\AppData\Local\Temp\SevenZipJBinding-9640553\lib7-Zip-JBinding.dll: Can't 
find dependent libraries 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
     at java.lang.ClassLoader.loadLibrary(Unknown Source) 
     at java.lang.Runtime.load0(Unknown Source) 
     at java.lang.System.load(Unknown Source) 
     at net.sf.sevenzipjbinding.SevenZip.initSevenZipFromPlatformJARIntern(SevenZip.java:428) 
     at net.sf.sevenzipjbinding.SevenZip.initSevenZipFromPlatformJAR(SevenZip.java:235) 
     at net.sf.sevenzipjbinding.SevenZip.ensureLibraryIsInitialized(SevenZip.java:578) 
     at net.sf.sevenzipjbinding.SevenZip.openInArchive(SevenZip.java:567) 
     at com.poc.sevenzip.SevenZipSimple.runZip(SevenZipSimple.java:25) 
     at com.poc.sevenzip.SevenZipSimple.main(SevenZipSimple.java:64 

我什麼困惑,這就是爲什麼它說它不能找到庫(dll文件),當庫存儲在<file_path>/sevenzipjbinding-AllWindows.jar文件內...我顯然沒有在這裏做一些正確的事,並希望some1可以給我一些指針。

乾杯

+0

據我所知,這是不可能直接從罐子存檔加載DLL ......你需要提取他們第一。 http://stackoverflow.com/questions/1611357/how-to-make-a-jar-file-that-include-dll-files – HectorLector

回答

1

下面的說明適用於Windows x86和7郵編JBinding版本4.65-1.05 RC。下載以下DLL。

添加DLL文件到Windows-x86目錄sevenzipjbinding-AllPlatforms.jar。然後將以下行添加到jar中的Windows-x86目錄中的sevenzipjbinding-lib.properties

sevenzipjbinding.libname.3=gpsvc.dll 
sevenzipjbinding.libname.4=libgcc_s_dw2-1.dll 
sevenzipjbinding.libname.5=libstdc++-6.dll 
sevenzipjbinding.libname.6=sysntfy.dll 

而不是修改jar文件,可以將DLL放在PATH(不是classpath)中。

爲了解決這個問題,我從sevenzipjbinding-AllPlatforms.jar中提取了lib7-Zip-JBinding.dll。然後我在Dependency Walker中打開這個文件。