我知道有很多类似的问题,我想我已经阅读并检查了所有可能性,并且不知道我做错了什么......
我从项目资源包加载到系统属性两个证书文件,然后将它们连接到JMS服务器。在Eclipse模式下运行应用程序时一切正常,尝试从可运行的JAR文件中读取资源时出现问题,它会导致错误:
FileNotFoundException: file:\path_to_my_jar!\resources\serverids.jks
文件位于jar(主文件夹)中。此文件夹位于src/resources
,但我尝试在src外部创建资源文件夹,并将其链接到具有相同结果的构建路径。
这是我正在读取文件和设置connectionManager的属性:
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
String keyStore = currentClassLoader.getResource("resources/serverids.jks").getPath();
String trustStore = currentClassLoader.getResource("resources/server.truststore").getPath();
System.setProperty("javax.net.ssl.keyStore", keyStore);
System.setProperty("javax.net.ssl.keyStorePassword", "pass");
System.setProperty("javax.net.ssl.trustStore", trustStore);
System.setProperty("javax.net.ssl.trustStorePassword", "pass");
答案 0 :(得分:0)
将此资源作为InputStream
获取,然后将其读取到String
以获取您要设置的属性值。此外,在您的情况下,您应该以这种方式提取资源:
CurrentClass.class.getResourceAsStream("blah.jks")
请不要忘记在处理后关闭流。