我在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
这是我的项目结构:
答案 0 :(得分:3)
答案 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=
我的密钥库加载器
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);