java.io.FileNotFoundException:/home/ec2 user/src/main/resources/keystore.jks(没有这样的文件或目录)

java.io.FileNotFoundException:/home/ec2 user/src/main/resources/keystore.jks(没有这样的文件或目录),java,spring-boot,resources,Java,Spring Boot,Resources,我在引用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=

我在引用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
jvm:
    key-store-type: PKCS12
    key-store: banking.p12
    key-store-password: aWRldmh1YlU=
这是我的项目结构:

尝试使用:

server.ssl.key-store=classpath:keystore.jks
文档:。

尝试使用:

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

文档:。

您的应用程序似乎从
/home/ec2 user/
开始。
您应该设置
server.ssl.key store
相对于
/home/ec2 user/
的路径,您的应用程序似乎从
/home/ec2 user/
开始。
您应该设置相对于
/home/ec2 user/
server.ssl.key store
路径以从资源文件读取:

应用程序、属性

server.ssl.key-store=keystore.jks
爪哇


要从资源文件中读取,请执行以下操作:

应用程序、属性

server.ssl.key-store=keystore.jks
爪哇


我也有同样的问题。我的解决办法是

my 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
jvm:
    key-store-type: PKCS12
    key-store: banking.p12
    key-store-password: aWRldmh1YlU=

还有我的钥匙库加载器

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);

我也有同样的问题。我的解决办法是

my 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
jvm:
    key-store-type: PKCS12
    key-store: banking.p12
    key-store-password: aWRldmh1YlU=

还有我的钥匙库加载器

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);

OP将JKS嵌入jar中,文件路径的相关性并不重要,因为实际的JKS文件不是作为独立文件存在于文件系统中keystore.JKS文件在jar文件中我不确定是否按照您的方法将Workup将JKS嵌入jar中,文件路径的相关性不重要,由于实际的JKS文件不作为独立文件在文件系统中,keystore.JKS文件在jar文件中,我不确定按照您的方法是否有效请显示java代码。请显示java代码。我应该在我的spring boot项目中的何处添加此登录?我应该在我的spring boot项目中的何处添加此登录?因此您创建了一个单独的类来处理keystore.jks文件?我只为load keystore.jks创建了getkeystrestream方法。此方法是TLS连接类的一部分。Param resourceName它是文件名,例如keystore.jks。我从属性文件中得到了这个名称。您创建了一个单独的类来处理keystore.jks文件吗?我只为load keystore.jks创建了getkeystrestream方法。此方法是TLS连接类的一部分。Param resourceName它是文件名,例如keystore.jks。我从属性文件中得到这个名称