我正在尝试使用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 ++:
答案 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。
安装后显示这些软件包包括32位和64位版本的PKCS#11 库,并要求在目标上安装32位和64位版本的Visual C++ Redistributable for Visual Studio 2015 系统
该软件包包括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。