Java 如何加载资源文件夹(maven)中的密钥库?

Java 如何加载资源文件夹(maven)中的密钥库?,java,maven,resources,keystore,truststore,Java,Maven,Resources,Keystore,Truststore,我有一个自定义SSL工厂,在那里我加载自己的信任库 现在,当我将truststore.jks文件放入项目根文件夹时,它使用以下行: ks.load(new FileInputStream("/truststore.jks", passphrase); ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase); 但是我希望我的信任库位于我的资源文件夹中,该文件夹是用maven构建的,路径是src/m

我有一个自定义SSL工厂,在那里我加载自己的信任库

现在,当我将truststore.jks文件放入项目根文件夹时,它使用以下行:

ks.load(new FileInputStream("/truststore.jks", passphrase);
ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase);
但是我希望我的信任库位于我的资源文件夹中,该文件夹是用maven构建的,路径是src/main/resources

然后我做了,但它不适用于以下行:

ks.load(new FileInputStream("/truststore.jks", passphrase);
ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase);
尽管输入流存在。我查过了。它只在执行ks.load(…)时失败

我得到的例外是:

 java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
为什么呢

问候,,
戴夫

奇怪,它现在能用了

我有

并将第二行更改为

systemProps.put( "javax.net.ssl.trustStore", "src/main/resources/truststore.jks");

有人知道为什么吗?这个解决方案行吗?

想到一件事,你可以试试。在getResourceAsStream中指定“/truststore.jks”,以便它从类路径的根目录进行搜索。我也尝试过,但没有成功…这只在本地开发环境中有效。构建工件后,路径
src/main/resources
将无效。请更新原始问题,而不是发布新问题作为答案。此解决方案与信任库是资源这一事实无关。您的答案(如我前面提到的)仅在开发期间有效,因此我不工作!