我知道这不是一个新问题(请参阅https://bugs.openjdk.java.net/browse/JDK-8023745),但我希望有人能够提供一个好的解决方法,以便我们推出。
我们正在部署一个使用pkcs11的应用程序,并且在解析配置时遇到问题,该配置位于“程序文件(x86)”中。我们得到的是:
sun.security.pkcs11.ConfigurationException:意外值Token ['('],第2行
在开发环境中,将位置移动到“干净”路径即可解决问题,因此问题肯定是(x86)。
什么是一个好的解决方法,希望对最终用户造成最小的麻烦?
答案 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。