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

GitHub Actions缓存Java17后版本显示为1.8的问题求助

问题根源

你手动缓存了JDK的安装目录,但忽略了actions/setup-java的核心作用——它不仅会安装JDK,还会自动配置JAVA_HOME环境变量,并将JDK的bin目录加入PATH。第二次流水线命中缓存时,你跳过了setup-java步骤,系统默认的Java 1.8环境变量没有被覆盖,所以虽然缓存里的Java 17存在,但系统找不到它,依然用的是1.8。

最优解决方案:用setup-java自带的缓存功能

从actions/setup-java@v3开始,官方已经内置了缓存支持,不需要手动用actions/cache实现,它会自动处理缓存和环境变量配置,避免手动缓存的问题。修改后的流水线配置如下:

name: pipeline to install & cache java
on:
  push:
    branches:
      - do/cs # 你的分支名
  workflow_dispatch: 
  
jobs:
  build:
    name: Install packages 
    runs-on: windows-2019

    steps:
      - name: Setup Java 17 with cache
        uses: actions/setup-java@v3
        with:
          distribution: 'microsoft'
          java-version: '17'
          architecture: 'x64'
          cache: 'maven' # 根据你的构建工具选择maven/gradle/sbt,即使无构建工具,填任意值即可触发JDK缓存
         
      - name: Verify Java installation
        run: |
          echo "java version:"
          java -version
手动缓存的修复方案(不推荐,仅作参考)

如果坚持手动缓存,需要在恢复缓存后手动配置环境变量,让系统识别到缓存的Java 17:

name: pipeline to install & cache java
on:
  push:
    branches:
      - do/cs
  workflow_dispatch: 
  
jobs:
  build:
    name: Install packages 
    runs-on: windows-2019

    steps:
      - name: Cache Java
        id: cache-java
        uses: actions/cache@v3
        with:
          path: 'c:\hostedtoolcache\windows\Java_Microsoft_jdk\17.0.3\x64'
          key: ${{ runner.os }}-jdk-17.0.3
          restore-keys: ${{ runner.os }}-jdk-17.0.3

      - name: Install Java
        if: ${{ steps.cache-java.outputs.cache-hit != 'true' }}
        uses: actions/setup-java@v3
        with:
          distribution: 'microsoft'
          java-version: '17'
          architecture: 'x64'
         
      - name: Configure Java environment (after cache restore)
        if: ${{ steps.cache-java.outputs.cache-hit == 'true' }}
        run: |
          # 设置JAVA_HOME为缓存的JDK路径
          echo "JAVA_HOME=c:\hostedtoolcache\windows\Java_Microsoft_jdk\17.0.3\x64" >> $env:GITHUB_ENV
          # 将JDK的bin目录加入PATH最前面,确保优先使用
          echo "c:\hostedtoolcache\windows\Java_Microsoft_jdk\17.0.3\x64\bin" >> $env:GITHUB_PATH
         
      - name: Verify Java installation
        run: |
          echo "java version:"
          java -version
补充说明
  • 推荐使用官方setup-java的缓存功能,它会自动处理JDK版本匹配、环境变量配置,避免手动缓存路径硬编码的问题(比如你写的17.0.3版本号,若微软后续更新JDK版本,路径会变更导致缓存失效)。
  • 手动缓存方式灵活性差,容易因版本更新出现路径不匹配的问题。

内容的提问来源于stack exchange,提问作者muhammad adil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:25:32