如何解决Java 11 Docker镜像中keytool的cacerts文件未找到错误?
解决Java 11 Docker镜像中cacerts路径错误问题
问题根源
Java 9及后续版本(含Java 11)重构了JDK目录结构,移除了独立的jre子目录。你的Dockerfile仍沿用Java 8时代的${JAVA_HOME}/jre/lib/security/cacerts路径,导致文件找不到。
修复方案
修改Dockerfile中的RUN命令,删除路径里的jre层级:
RUN ${JAVA_HOME}/bin/keytool -noprompt -keystore ${JAVA_HOME}/lib/security/cacerts -storepass changeit -importcert -alias aaa-ca-full -file /tmp/cacerts/aaa_ca1_full_chain.pem
验证步骤(可选)
- 先确认基础镜像中的Java目录结构:
执行后应能看到docker run --rm docker.repo1.aaa.com/ecap/base-images/centos-8-openjdk11:latest ls -l ${JAVA_HOME}/lib/security/cacerts文件。 - 检查基础镜像中
${JAVA_HOME}环境变量是否正确设置,避免路径引用错误。
内容的提问来源于stack exchange,提问作者Pritish
相关产品推荐
相关产品推荐

