1

我在这里查看了许多 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 可以给我一些指示。

干杯

4

2 回答 2

1

以下说明适用于 Windows x86 和 7 Zip JBinding 版本 4.65-1.05 RC。下载以下 DLL。

将 DLL 添加Windows-x86sevenzipjbinding-AllPlatforms.jar. 然后将以下行追加到jarsevenzipjbinding-lib.properties的目录中。Windows-x86

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

可以将 DLL 放在 PATH(不是类路径)中,而不是修改 jar 文件。

为了弄清楚这一点,我lib7-Zip-JBinding.dllSevenzipjbinding-AllPlatforms.jar中提取。然后我在Dependency Walker中打开了该文件。

于 2012-07-19T20:14:30.870 回答
1

错误修复已发布。请使用 1.06rc 或更高版本。

下载地址:

于 2013-01-17T09:48:46.143 回答