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

GitHub Actions缓存Java17后显示1.8,如何正确缓存指定版本?

解决GitHub Actions中Java缓存后版本不匹配的问题

问题现象

脚本第二次运行触发缓存后,缓存的是Java 17版本,但执行java -version显示为1.8:

openjdk version "1.8.0_352"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.352-b08, mixed mode)

问题根源

  1. PATH配置错误:手动设置PATH时仅添加了JAVA_HOME根目录,未添加\bin子目录——Java可执行文件(如java.exe)存放在JAVA_HOME\bin下,系统找不到该路径时会使用默认的Java 1.8。
  2. 环境变量配置不完整:缓存命中时跳过了setup-java步骤,而手动硬编码的JAVA_HOME未配合setup-java的自动环境变量配置逻辑,导致Java 17的路径未被正确加入PATH优先级。

解决方案

方案一:使用actions/setup-java自动管理(推荐)

actions/setup-java会自动处理JAVA_HOME和PATH的配置,即使缓存恢复后也能正确识别已安装的JDK,无需手动设置环境变量:

name: dotnet-pipeline
on: [push]

jobs:
  build:
    name: Build-run-analysis
    runs-on: windows-2022
  
    steps:  
      - name: Cache Microsoft JDK
        id: cache-jdk
        uses: actions/cache@v3
        with:
          # 缓存整个Microsoft JDK目录,兼容同大版本的不同小版本
          path: C:\hostedtoolcache\windows\Java_Microsoft_jdk
          # 缓存key包含具体版本,避免不同版本混淆
          key: ${{ runner.os }}-microsoft-jdk-17.0.3
          restore-keys: |
            ${{ runner.os }}-microsoft-jdk-17-
            ${{ runner.os }}-microsoft-jdk-
  
      - name: Setup Java 17
        uses: actions/setup-java@v3
        with:
          distribution: 'microsoft'
          java-version: '17'
          check-latest: false
          # setup-java会自动检测缓存中的JDK,存在则直接配置环境变量,无需重新下载
      
      - name: Check Java version
        run: java -version

方案二:修复手动PATH配置(仅作参考)

如果坚持手动管理缓存和环境变量,需修正PATH的配置路径:

name: dotnet-pipeline
on: [push]

jobs:
  build:
    name: Build-run-analysis
    runs-on: windows-2022
  
    env:
      JAVA_HOME: 'C:\hostedtoolcache\windows\Java_Microsoft_jdk\17.0.3\x64'
      JAVA_HOME_17_X64: 'C:\hostedtoolcache\windows\Java_Microsoft_jdk\17.0.3\x64'
     
    steps:  
    
      - name: Cache JDK
        id: cache-jdk
        uses: actions/cache@v3
        with:
          path: ${{ env.JAVA_HOME }}
          key: ${{ runner.os }}-jdk-17
          restore-keys: |
            ${{ runner.os }}-jdk-
  
      - name: Install Java
        if: steps.cache-jdk.outputs.cache-hit != 'true'
        uses: actions/setup-java@v3
        with:
          distribution: 'microsoft'
          java-version: '17'
          check-latest: false
        
      - name: Set PATH with Java bin directory
        run: |
          # 需添加JAVA_HOME\bin路径,而非根目录
          echo "${{ env.JAVA_HOME }}\bin" | Out-File -FilePath $ENV:GITHUB_PATH -Encoding utf8 -Append       

      - name: check version
        run: java -version

内容的提问来源于stack exchange,提问作者Abubakar Riaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:01:34