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

GitLab流水线运行报Could not find or load main class错误如何解决?

问题解答

1. 自定义Maven本地仓库路径报错的原因与解决方法

报错原因

你的CI_PROJECT_DIR路径D:\Java Testing\GitLab-Runner\...中存在空格,而你定义的MAVEN_OPTS参数没有做引号包裹处理,Windows Shell执行命令时会按空格将参数拆分:
展开后的参数-Dmaven.repo.local=D:\Java Testing\GitLab-Runner\...\.m2\repository会被拆为两部分:-Dmaven.repo.local=D:\Java和Testing\GitLab-Runner\...\.m2\repository,JVM会把第二部分识别为要启动的主类名,因此抛出找不到主类的错误。

提示:No URL provided, cache will not be downloaded from shared cache server属于正常提示,仅说明你未配置分布式共享缓存服务,当前使用Runner本地缓存,不影响构建功能。

解决方法

你可以任选以下一种方案修复:

  • 方案1:执行mvn命令时给变量包裹双引号,避免空格拆分。将script段中的mvn $MAVEN_OPTS clean test修改为:
    • Cmd环境:mvn "%MAVEN_OPTS%" clean test
    • PowerShell环境:mvn "$MAVEN_OPTS" clean test
  • 方案2:定义MAVEN_OPTS变量时自带引号,修改variables段配置:
    variables:
      MAVEN_OPTS: "-D\"maven.repo.local=$CI_PROJECT_DIR/.m2/repository\""
    
  • 方案3:修改GitLab Runner的工作根目录,确保路径中不存在空格,从根源规避参数拆分问题。

2. 默认依赖下载到System32目录的原因

你使用的是Windows系统的Shell类型GitLab Runner,默认情况下GitLab Runner服务是以**本地系统账户(Local System)**运行的,该账户的默认用户家目录就是C:\Windows\System32\config\systemprofile\,而Maven默认的本地仓库路径为${user.home}/.m2/repository,因此依赖会默认下载到该路径下。

如果需要修改默认路径,你可以将GitLab Runner服务的运行账户修改为普通Windows用户,就会自动切换到对应用户家目录下的.m2路径作为默认仓库位置。


内容的提问来源于stack exchange,提问作者Sandesh Sawant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:54:01