java抱怨从softhsm加载pkcs dll

时间:2017-03-30 10:08:55

标签: java windows pkcs#11 softhsm

我正在尝试使用java 1.8-64bit为我的项目使用softhsm。

我正在尝试使用这里给出的第一个示例java类Connecting to SoftHSM java code

我能够安装softhsm softhsm2-windows installer

并且还能够创建令牌usng softhsm-util.exe工具。

但是当我尝试运行java代码时,我正在

            Exception in thread "main" java.security.ProviderException: Initialization failed
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:376)
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
                at SoftHSM.main(SoftHSM.java:44)
            Caused by: java.io.IOException: The specified module could not be found.
            Z:/SOFTHSM_INSTALL/lib/softhsm2-x64.dll
                at sun.security.pkcs11.wrapper.PKCS11.connect(Native Method)
                at sun.security.pkcs11.wrapper.PKCS11.<init>(PKCS11.java:138)
                at sun.security.pkcs11.wrapper.PKCS11.getInstance(PKCS11.java:151)
                at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:313)
                ... 2 more

即使该文件在异常位置提供的正确位置。

请帮助解决此问题。

已安装更新的系统Visual C ++:

Visual C++ in My PC Win 10

1 个答案:

答案 0 :(得分:0)

TLDR :如果您想使用JAVA应用程序中的softhsm2-x64.dll,则需要安装64位版本的Visual C++ Redistributable for Visual Studio 2015

详细解答:您确实使用SoftHSM2 installer for MS Windows安装了SoftHSM。

该软件包中存在的所有可执行文件和库(包括softhsm2-util.exe)对于softhsm2-x64.dll是64位的32位预期。

该软件包中包含的所有可执行文件和库(包括softhsm2-util.exe)都依赖于Visual Studio 2015的32位版本的Visual C ++ Redistributable,期望softhsm2-x64.dll依赖于64位版本的Visual C ++ Visual Studio 2015的Redistributable。

项目网站上的

README.md说:

  

这些软件包包括32位和64位版本的PKCS#11   库,并要求在目标上安装32位和64位版本的Visual C++ Redistributable for Visual Studio 2015   系统

安装后显示

README.txt

  

该软件包包括SoftHSM 2.2.0的32位和64位版本   静态链接到OpenSSL 1.1.0d。它需要32位和   Visual Studio 2015的64位版Visual C ++ Redistributable   要安装在目标系统上。这些可以从以下网址下载:

     

http://www.microsoft.com/en-us/download/details.aspx?id=48145

我的建议:为Visual Studio 2015安装32位和64位版本的Visual C ++ Redistributable。