我试图使用java 1.8-64位在我的项目中使用softhsm。
我正在尝试使用这里给出的m第一个示例java类,连接到SoftHSM java代码。
我能够安装软软件2-windows安装程序。
还可以使用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即使像异常中提到的那样,文件在正确的位置上可用。
请帮助解决这个问题。
已安装更新的系统VisualC++:
发布于 2017-04-06 20:55:02
TLDR:如果您想从您的softhsm2-x64.dll应用程序中使用softhsm2-x64.dll,那么您需要安装Visual 2015的Visual C++可再发行版的64位版本。
详细回答:您确实使用用于MS的SoftHSM2安装程序安装了SoftHSM。
该包(包括softhsm2-util.exe)中的所有可执行文件和库对于64位的softhsm2-x64.dll来说都是32位的期望值。
该包中的所有可执行文件和库(包括softhsm2-util.exe)都依赖于VisualStudio2015Expect for softhsm2-x64.dll的32位C++可再发行版,该版本依赖于Visual 2015的64位版本的VisualC++可再发行版。
项目网站上的README.md说:
这些包包括32位和64位版本的PKCS#11库,并要求在目标系统上安装32位和64位版本的Visual 2015的Visual C++可再发行版。
安装后显示的README.txt显示:
这个包包括32位和64位构建的SoftHSM 2.2.0静态链接到OpenSSL 1.1.0d。需要在目标系统上安装Visual 2015的32位版本和64位版本的Visual可再发行版。这些文件可从以下网址下载: http://www.microsoft.com/en-us/download/details.aspx?id=48145
我的建议是:为Visual 2015安装32位和64位版本的Visual可再发行版。
https://stackoverflow.com/questions/43114733
复制相似问题