问题描述
我的应用程序可以在 eclipse 中运行,也可以通过 gradlew bootRun 运行。但是当我通过 gradlew build 构建一个 'fat' jar 文件 app.jar,然后通过 java -jar app.jar 启动应用程序时,我得到以下错误: >
ERROR o.a.k.c.s.ssl.SslEngineBuilder - 无法获取密钥库的修改时间:kafka_truststore.jks java.nio.file.NoSuchFileException: kafka_truststore.jks
kafka_truststore.jks 在 application.properties 中定义如下
kafka.truststore_location=src/main/resources/kafka_truststore.jks
它在kafka客户端配置类中使用,如下所示
@Value("${kafka.truststore_location}") private String trustStoreLocation;
props.put("ssl.truststore.location",trustStoreLocation);
有人知道如何解决这个问题吗?谢谢。
解决方法
构建 jar 时,资源中的所有文件通常都打包在项目根目录中。
所以为了让 trustore,jks 工作,改变你的 application.propeties 如下
kafka.truststore_location=classpath:kafka_truststore.jks
这将在 IDE 和独立运行胖 jar 时工作。