java 抱怨从 softhsm 加载 pkcs dll
java complains on loading pkcs dll from softhsm
我正在尝试使用 java 1.8-64 位为我的项目使用 softhsm。
我正在尝试使用此处给出的第一个示例 java class Connecting to SoftHSM java code
我能够安装 softhsm softhsm2-windows installer。
并且还能够使用 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
TLDR :如果您想在 JAVA 应用程序中使用 softhsm2-x64.dll
,则需要安装 64 位版本的 Visual C++ Redistributable for Visual Studio 2015 .
详细答案:您确实使用 SoftHSM2 installer for MS Windows.
安装了 SoftHSM
该包(包括 softhsm2-util.exe
)中存在的所有可执行文件和库都是 32 位的,但 softhsm2-x64.dll
是 64 位的。
该包中存在的所有可执行文件和库(包括 softhsm2-util.exe
)都依赖于 32 位版本的 Visual C++ Redistributable for Visual Studio 2015,期望 softhsm2-x64.dll
依赖于 64- Visual Studio 2015.
的 Visual C++ Redistributable 位版本
README.md 在项目网站上说:
These packages include both 32-bit and 64-bit versions of PKCS#11
library and require both 32-bit and 64-bit version of Visual C++
Redistributable for Visual Studio 2015 to be installed on the target
system.
README.txt 安装后显示:
This package includes both 32-bit and 64-bit build of SoftHSM 2.2.0
statically linked to OpenSSL 1.1.0d. It requires both 32-bit and
64-bit version of Visual C++ Redistributable for Visual Studio 2015
to be installed on the target system. These can be downloaded from:
http://www.microsoft.com/en-us/download/details.aspx?id=48145
我的建议:为 Visual Studio 2015 安装 32 位和 64 位版本的 Visual C++ Redistributable。
我正在尝试使用 java 1.8-64 位为我的项目使用 softhsm。
我正在尝试使用此处给出的第一个示例 java class Connecting to SoftHSM java code
我能够安装 softhsm softhsm2-windows installer。
并且还能够使用 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
TLDR :如果您想在 JAVA 应用程序中使用 softhsm2-x64.dll
,则需要安装 64 位版本的 Visual C++ Redistributable for Visual Studio 2015 .
详细答案:您确实使用 SoftHSM2 installer for MS Windows.
安装了 SoftHSM该包(包括 softhsm2-util.exe
)中存在的所有可执行文件和库都是 32 位的,但 softhsm2-x64.dll
是 64 位的。
该包中存在的所有可执行文件和库(包括 softhsm2-util.exe
)都依赖于 32 位版本的 Visual C++ Redistributable for Visual Studio 2015,期望 softhsm2-x64.dll
依赖于 64- Visual Studio 2015.
README.md 在项目网站上说:
These packages include both 32-bit and 64-bit versions of PKCS#11 library and require both 32-bit and 64-bit version of Visual C++ Redistributable for Visual Studio 2015 to be installed on the target system.
README.txt 安装后显示:
This package includes both 32-bit and 64-bit build of SoftHSM 2.2.0 statically linked to OpenSSL 1.1.0d. It requires both 32-bit and 64-bit version of Visual C++ Redistributable for Visual Studio 2015 to be installed on the target system. These can be downloaded from:
http://www.microsoft.com/en-us/download/details.aspx?id=48145
我的建议:为 Visual Studio 2015 安装 32 位和 64 位版本的 Visual C++ Redistributable。