./gradlew 构建失败并出现错误:无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain

问题描述 投票:0回答:1

我有一个 Java 项目作为多模块 gradle 项目,如下所示。

rootproject
├── subproject1
│   └── src/main/java
├── subproject2
│   └── src/main/java
├── subproject3
│   └── src/main/java
│
├── build.gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── gradle
    └── wrapper
        ├── gradle-wrapper.jar
        └── gradle-wrapper.properties

我想在 GitHub-Action 中构建它。

name: CI

on:
  push:
    branches:
      - '*'

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    name: CI-Build
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-java@v4
        with:
          java-version: 17
          distribution: 'temurin'

      - name: Build and analyze
        run: |
          ./gradlew clean build

步骤

Build and analyze
失败并出现以下错误:

Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain

经常提到的在

gradle/wrapper
中提交文件的解决方案并不能解决问题,因为它们已经提交并在
.gitignore
中被明确排除。

java gradle github-actions
1个回答
0
投票

经过长时间的搜索,一位同事找到了问题的解决方案。

项目中提交了

.gitattributes
文件。其中,
*.jar
文件被配置为 Git LFS 文件。

*.jar filter=lfs diff=lfs merge=lfs -text

由于合并,

gradle-wrapper.jar
文件被破坏并且无法再读取。

删除

*.jar
文件的配置并重新创建 gradle-wrapper.jar 后,
./gradlew
现在可以正常使用。

© www.soinside.com 2019 - 2024. All rights reserved.