2201_75479241 2026-03-24 11:35 采纳率: 0%
浏览 6

Maven打包提示找不到javac,mvn -v时runtime指向jre

img


maven打包jar时提示没有找到javac但是cmd里面java和javac都有输出,并且mvn-v指向jre导致打包失败

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-03-24 11:36
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你遇到的问题是:Maven 打包时提示找不到 javac,而 javajavac 在命令行中都可以正常运行。但当你执行 mvn -v 时,发现 Maven 的 Runtime 指向的是 JRE 而不是 JDK,这会导致 Maven 无法找到编译所需的 javac,从而打包失败。


    问题原因分析:

    1. Maven 使用的 Java 运行时是 JRE(Java Runtime Environment)而非 JDK(Java Development Kit)
    2. JRE 中不包含 javac 编译器,因此 Maven 在尝试编译源码时会报错:“找不到 javac”。
    3. 尽管你在命令行中输入 javajavac 都有输出,但这些可能是在另一个环境变量配置中生效的,而 Maven 可能使用了系统默认的或某个特定配置的 Java 环境。

    解决方案如下:

    1. 确认当前 Maven 使用的 Java 版本

    在命令行中执行以下命令,查看 Maven 使用的 Java 环境:

    mvn -v
    

    输出示例:

    Apache Maven 3.8.6 (...)
    Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jre1.8.0_291
    

    如果 runtime 显示的是 jre 而不是 jdk,说明 Maven 正在使用 JRE。


    2. 设置 JAVA_HOME 环境变量指向 JDK 安装目录

    • Windows 系统

      • 找到 JDK 的安装路径,例如:C:\Program Files\Java\jdk1.8.0_291
      • 设置系统变量 JAVA_HOME 指向该路径
      • %JAVA_HOME%\bin 添加到 PATH 环境变量中
    • Linux/macOS 系统

      • 在终端中执行以下命令(根据实际 JDK 路径修改):
        export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
        export PATH=$JAVA_HOME/bin:$PATH
        

    注意: 请确保 JAVA_HOME 指向的是 JDK 而不是 JRE。


    3. 检查并更新 Maven 的配置文件 settings.xml

    Maven 有时会通过 settings.xml 文件指定 Java 路径,虽然一般情况下不需要手动配置,但你可以检查一下:

    • 位置通常在:%USERPROFILE%\.m2\settings.xml~/.m2/settings.xml
    • 如果没有该文件,可以创建一个,并添加以下内容以强制指定 JDK 路径(可选):
    <settings>
      <profiles>
        <profile>
          <id>custom-jdk</id>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>
          <properties>
            <java.version>1.8</java.version>
          </properties>
        </profile>
      </profiles>
    </settings>
    

    注: 该配置只是用于指定 Java 版本,并不直接设置 JDK 路径,仍需依赖 JAVA_HOME 环境变量。


    4. 重启命令行工具并验证配置

    • 关闭所有命令行窗口
    • 重新打开命令行工具
    • 再次执行以下命令验证:
    echo %JAVA_HOME%
    java -version
    javac -version
    mvn -v
    

    确保所有输出都显示为 JDK 版本。


    5. 修改 Maven 命令行参数(临时解决方案)

    如果你不想更改全局环境变量,可以在运行 Maven 前临时设置 JAVA_HOME,例如:

    set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_291
    mvn clean package
    

    注意: 这种方式只对当前命令行会话有效。


    ✅ 总结

    | 步骤 | 内容 | |------|------| | 1 | 检查 mvn -v 输出,确认是否使用 JRE | | 2 | 设置 JAVA_HOME 指向 JDK 安装路径 | | 3 | 更新 PATH 环境变量,确保 JDK 的 bin 目录在前 | | 4 | 重启命令行并验证配置 | | 5 | (可选)临时设置 JAVA_HOME 执行 Maven 命令 |


    🧠 附加建议

    • 避免混合使用多个 JDK/JRE:确保系统中只安装一个 JDK 并正确配置。
    • 使用 IDE 配置 JDK:如果你使用 IntelliJ IDEA、Eclipse 等 IDE,也应确保它们使用的 JDK 是正确的。
    • 使用 where java / where javac 查看路径:帮助排查环境变量冲突。

    如需进一步帮助,请提供以下信息:

    • mvn -v 的完整输出
    • echo %JAVA_HOME% 的输出
    • where javawhere javac 的输出

    我可以帮你更精准地定位问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日