java.io.FileNotFoundException: /home/ec2-user/src/main/resources/keystore.jks (没有那个文件或目录)

java.io.FileNotFoundException: /home/ec2-user/src/main/resources/keystore.jks (No such file or directory)

我在引用我的 jar 文件中的文件时遇到问题,特别是 keystore.jks。我将文件存储在资源文件中,但似乎当我尝试 运行 springboot 项目时文件未被拾取。

我收到此错误:

java.io.FileNotFoundException: /home/ec2-user/src/main/resources/keystore.jks (No such file or directory)

这是我的 applications.properties 文件:

server.ssl.key-store=src/main/resources/keystore.jks
server.ssl.key-store-password=mypassword
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=my_alias

这是我的项目结构:

尝试使用:

server.ssl.key-store=classpath:keystore.jks

文档:docs.spring.io.

您的申请似乎在 /home/ec2-user/ 开始。 您应该设置 server.ssl.key-store 相对于 /home/ec2-user/

的路径

从资源文件中读取:

applications.properties

server.ssl.key-store=keystore.jks

java

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(prop.getProperty("server.ssl.key-store")).getFile());

我遇到了同样的问题。我的解决方案是

我的 applications.properties 文件:

jvm:
    key-store-type: PKCS12
    key-store: banking.p12
    key-store-password: aWRldmh1YlU=

This is my project structure

还有我的密钥存储加载程序

public InputStream getKeyStoreStream(String resourceName) {
    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    return loader.getResourceAsStream(resourceName);
}

并加载

    @Value("${jvm.trust-store}")
    private String JVM_TRUST_STORE;

    @Value("${jvm.key-store}")
    private String JVM_KEY_STORE;

keysP12 = KeyStore.getInstance("PKCS12");
keysP12.load(getKeyStoreStream(JVM_KEY_STORE), keyStorePassword);

我对 JKS 也是这样想的

keysJks = KeyStore.getInstance("JKS");
keysJks.load(getKeyStoreStream(JVM_TRUST_STORE), trustStorePassword);