You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无Java扩展的VS Code Java项目Docker运行报错(javac未找到)

问题解决:Docker中javac: not found报错

问题根源

  1. 基础镜像选择错误:你使用的openjdk:11-jre-slim是JRE(Java运行环境)镜像,仅包含java命令用于运行编译后的class文件,没有javac编译器,因此执行RUN javac会提示命令不存在。
  2. 步骤顺序错误:原Dockerfile中先执行RUN javac CalculatorTest.java,再执行COPY . .,此时源代码还未复制到容器内,即使有javac也会找不到要编译的文件。

解决方案

方案一:改用JDK镜像(简单直接)

将基础镜像替换为包含JDK的版本,并调整步骤顺序(先复制代码再编译):

FROM openjdk:11-jdk-slim 
WORKDIR /app 
COPY . .  # 先把本地代码复制到容器工作目录
RUN javac CalculatorTest.java  # 编译源代码
CMD ["java","CalculatorTest"]  # 运行编译后的类

方案二:多阶段构建(推荐,镜像体积更小)

先用JDK镜像完成编译,再将编译好的class文件复制到轻量的JRE镜像中运行,最终镜像体积更小、更安全:

# 第一阶段:编译代码(使用JDK镜像)
FROM openjdk:11-jdk-slim AS builder
WORKDIR /build
COPY CalculatorTest.java .
RUN javac CalculatorTest.java

# 第二阶段:运行代码(使用JRE镜像)
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /build/CalculatorTest.class .
CMD ["java", "CalculatorTest"]

额外检查

确保你的CalculatorTest.java中包含主类和主方法:

public class CalculatorTest {
    public static void main(String[] args) {
        // 你的业务逻辑代码
    }
}

内容的提问来源于stack exchange,提问作者Shira Hanuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:52:39