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

时间:2018-04-25 11:09:17

标签: 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=src/main/resources/keystore.jks
server.ssl.key-store-password=mypassword
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=my_alias

这是我的项目结构:

enter image description here

4 个答案:

答案 0 :(得分:3)

尝试使用:

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

文档:docs.spring.io

答案 1 :(得分:0)

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

/home/ec2-user/路径

答案 2 :(得分:0)

要从资源文件中读取:

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

答案 3 :(得分:0)

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

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