可执行 jar - 从项目资源加载信任库
Executable jar - loading truststore from projects resources
我知道有很多类似的问题,我想我已经阅读并检查了所有可能性,但不知道我做错了什么...
我正在将项目资源包中的两个证书文件加载到系统属性,然后将它们连接到 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");
将此资源作为 InputStream
获取,然后将其读取到 String
到您要设置的 属性 值。此外,在您的情况下,您应该以这种方式提取资源:
CurrentClass.class.getResourceAsStream("blah.jks")
请不要忘记在处理后关闭流。
我知道有很多类似的问题,我想我已经阅读并检查了所有可能性,但不知道我做错了什么...
我正在将项目资源包中的两个证书文件加载到系统属性,然后将它们连接到 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");
将此资源作为 InputStream
获取,然后将其读取到 String
到您要设置的 属性 值。此外,在您的情况下,您应该以这种方式提取资源:
CurrentClass.class.getResourceAsStream("blah.jks")
请不要忘记在处理后关闭流。