pkcs11异常解析配置:意外值Token ['(']

时间:2018-07-24 14:52:49

标签: java java-8 pkcs#11

我知道这不是一个新问题(请参阅https://bugs.openjdk.java.net/browse/JDK-8023745),但我希望有人能够提供一个好的解决方法,以便我们推出。

我们正在部署一个使用pkcs11的应用程序,并且在解析配置时遇到问题,该配置位于“程序文件(x86)”中。我们得到的是:

sun.security.pkcs11.ConfigurationException:意外值Token ['('],第2行

在开发环境中,将位置移动到“干净”路径即可解决问题,因此问题肯定是(x86)。

什么是一个好的解决方法,希望对最终用户造成最小的麻烦?

2 个答案:

答案 0 :(得分:1)

所以最好的解决方案是使用org.apache.commons.io.FileUtils中的FileUtils.copyFileToDirectory()使用“有效”路径将文件复制到另一个位置。

答案 1 :(得分:0)

我在Windows中找到了解决此问题的简单方法。就我而言,我试图从Mozilla 32位安装目录中加载nss本机库。如果我以这种方式配置路径:

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。