Java Jar文件无法找到密钥库

Java Jar文件无法找到密钥库,java,spring-boot,ssl,keystore,spring-kafka,Java,Spring Boot,Ssl,Keystore,Spring Kafka,我正在运行一个SpringKafka生产者。我已经在yml文件中配置了密钥库位置,并在eclipse中运行时获取了它。但是当代码作为jar运行时,它无法找到密钥库位置。如何解决这个问题 spring: kafka: producer: ssl: key-password: key-store-location: classpath:es-cert.jks key-store-password: password

我正在运行一个SpringKafka生产者。我已经在yml文件中配置了密钥库位置,并在eclipse中运行时获取了它。但是当代码作为jar运行时,它无法找到密钥库位置。如何解决这个问题

spring:
  kafka:
    producer:
      ssl:
        key-password:
        key-store-location: classpath:es-cert.jks
        key-store-password: password
        key-store-type: jks
这是我的yml文件

我得到以下错误:

java.io.FileNotFoundException:类路径资源[es-cert.jks]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/u01/home/app/user docker/kafka2.jar/BOOT-INF/classes/es-cert.jks


但是es-cert.jks存在于jar中。

Kafka不理解文件系统上的Spring资源文件

您不能使用
classpath:
从jar引用密钥存储,因为Spring Boot必须将资源转换为绝对路径才能将其传递给Kafka

    private String resourceToPath(Resource resource) {
        try {
            return resource.getFile().getAbsolutePath();
        }
        catch (IOException ex) {
            throw new IllegalStateException("Resource '" + resource + "' must be on a file system", ex);
        }
一种解决方案是自己将密钥库从jar资源复制到文件系统上的一个文件中。在加载
SpringApplication
之前执行此操作


e、 g.使用
FileCopyUtils

Kafka不理解文件系统上的Spring资源文件

您不能使用
classpath:
从jar引用密钥存储,因为Spring Boot必须将资源转换为绝对路径才能将其传递给Kafka

    private String resourceToPath(Resource resource) {
        try {
            return resource.getFile().getAbsolutePath();
        }
        catch (IOException ex) {
            throw new IllegalStateException("Resource '" + resource + "' must be on a file system", ex);
        }
一种解决方案是自己将密钥库从jar资源复制到文件系统上的一个文件中。在加载
SpringApplication
之前执行此操作


e、 g.使用
FileCopyUtils

es-cert.jks文件在jar文件中吗?是的,它在那里。es-cert.jks文件在jar文件中吗?是的,它在那里。