我知道这不是一个新问题(请参阅 https://bugs.openjdk.java.net/browse/JDK-8023745 ),但我希望有人能提供我们可以推出的良好解决方法。
我们正在部署一个使用 pkcs11 的应用程序,在解析配置时遇到了问题,该配置位于“程序文件 (x86)”中。我们得到的是:
sun.security.pkcs11.ConfigurationException:意外值 Token['('],第 2 行
在开发环境中,将位置移动到“干净”路径即可解决问题,因此问题肯定是 (x86)。
什么是好的解决方法,希望对最终用户造成的麻烦最少?
最佳答案
我在 Windows 中找到了解决此问题的简单方法。在我的例子中,我试图从 Mozilla 32 位安装目录加载 nss native 库。如果我这样配置路径:
name = NSS
library = C:\Program Files (x86)\Mozilla Firefox\softokn3.dll
我收到 Unexpected value Token['(']
异常。如果我尝试添加 "
来包含库路径:
name = NSS
library = "C:\Program Files (x86)\Mozilla Firefox\softokn3.dll"
然后错误发生变化,我得到:
Caused by: sun.security.pkcs11.ConfigurationException: Absolute path required for library value: C:Program Files (x86)Mozilla Firefoxsoftokn3.dll
似乎 "
绕过了括号问题,但似乎导致 file.separator
丢失,所以我最后一次尝试使用 "
和“转义”file.separator
(简单地将 replace("\\","\\\\")
应用到配置之前的路径):
name = NSS
library = "C:\\Program Files (x86)\\Mozilla Firefox\\softokn3.dll"
这样库就可以正确加载了。我针对 Java 8 更新 141 对其进行了测试。
关于java - pkcs11异常解析配置: Unexpected value Token ['(' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51501701/