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

Dav*_*eld 6 java resources keystore truststore maven

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

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

ks.load(new FileInputStream("/truststore.jks", passphrase);
Run Code Online (Sandbox Code Playgroud)

但是我希望我的信任库位于我的资源文件夹中,该文件夹是使用maven构建的,其路径是src/main/resources.

然后我这样做,它不适用于以下行:

ks.load(this.getClass().getResourcesAsStream("/truststore.jks"), passphrase);
Run Code Online (Sandbox Code Playgroud)

虽然输入流存在.我检查了一下.它只在我执行ks.load(...)时失败.

我得到的例外是:

 java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Run Code Online (Sandbox Code Playgroud)

这是为什么?

问候,戴夫

Dav*_*eld -5

奇怪,现在可以用了...

我有

Properties systemProps = System.getProperties();
systemProps.put( "javax.net.ssl.trustStore", "/truststore.jks");
systemProps.put( "javax.net.ssl.trustStorePassword", "changeit");
System.setProperties(systemProps);
Run Code Online (Sandbox Code Playgroud)

并将第二行更改为

systemProps.put( "javax.net.ssl.trustStore", "src/main/resources/truststore.jks");
Run Code Online (Sandbox Code Playgroud)

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

  • 这仅适用于您本地的开发环境。一旦你构建了你的工件,路径 `src/main/resources` 将无效。 (4认同)
  • 请更新您的原始问题,而不是发布新问题作为答案 (2认同)