JAR-файл не может найти хранилище ключей - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю с производителем 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.

1 Ответ

2 голосов
/ 05 ноября 2019

Кафка не понимает ресурсы Spring только файлы в файловой системе.

Нельзя использовать classpath: для ссылки на хранилище ключей из банки, поскольку 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.

, например, используйте FileCopyUtils.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...