当前位置: 首页 > 知识库问答 >
问题:

罐子文件无法找到密钥库

戈念
2023-03-14

我在经营一个Kafka制作人。我已经在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木卫一。FileNotFoundException:类路径资源[es-cert.jks]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/u01/home/app/user docker/kafka2中。罐子/BOOT-INF/classes/es-cert.jks

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

共有1个答案

周云
2023-03-14

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

 类似资料:
  • 有人能帮我整合一下。带jmeter的pfx客户端证书?我已将pfx文件转换为jks文件。我已经在系统中添加了相同的功能。财产。但我无法执行客户的请求。我得到以下错误。 2018-11-08 22:31:08137信息o.a.j.u.SSLManager:JmeterKeyStore位置:C:MyWorkSpace/apache-jmeter-5.0certclientcert。jks type j

  • 我在jre/lib/security下有一个密钥存储文件cacerts,我在其中使用import命令添加了一个证书。 我的密钥库里有50多个证书。如何在密钥库中找到上次导入的证书的别名。我想删除上次添加的证书,我需要为其提供别名。好心的帮助。

  • 根据以下步骤将Swagger从2.9.2升级到3.0.0: https://springfox.github.io/springfox/docs/snapshot/#migrating-from-existing-2-x-版本 在新版本中,虽然功能工作正常,但点击“/swagger-用户界面/index.html”时,以下错误会打印在日志中。 使用springfox-boot-starter 3.

  • 我是Docker的新手。我使用ASP创建了一个Web API。Net内核使用Visual Studio 2019以及VS代码。它很好用。然后我添加了docker支持,并添加了带有默认值的Dockerfile。 当我尝试构建docker映像时,它在Visual Studio 2019和VS代码中都失败了。 但是,如果我尝试使用VisualStudio2019提供的选项运行Docker映像(我可以在其

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 问题内容: 假设我的jar包“ com.test.io”中有一个名为test.txt的文件。 我将如何编写一个类来检索此文本文件,然后将内容复制到文件系统上的新文件中? 问题答案: 假设jar在您的类路径中: