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

Jenkins自动编译Delphi项目报错:找不到System.pas或.dcu文件

解决Jenkins构建Delphi项目时的"Unit not found: 'System.pas'"问题

这种情况我碰到过好几次——本地IDE编译顺得很,一到Jenkins就掉链子,核心原因就是Jenkins的运行环境没拿到Delphi编译所需的环境变量和路径配置。给你几个靠谱的解决方向:

1. 先加载RAD Studio的环境配置脚本

Delphi的命令行编译依赖一堆环境变量,IDE启动时会自动跑rsvars.bat来配置,但Jenkins的进程默认不会继承这些。你要在编译前手动调用这个脚本:
把你的Jenkins批处理命令改成这样:

call "C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\rsvars.bat"
cd "C:\Users\carlos.santos\Desktop\teste"
call build.bat

要是Jenkins是用服务运行的,记得检查服务的登录用户能不能访问RAD Studio的安装目录,最好把环境变量设成系统级的,避免用户权限问题。

2. 给命令行编译指定明确的库路径

如果你的build.bat里直接用dcc32编译,可能得手动指定System.pas所在的路径。比如把编译命令改成:

dcc32 -U"C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\lib\win32\release" Project1.dpr

-U参数就是告诉编译器去哪找单元文件,把Delphi的lib目录(包括win32子目录)加进去就行。

3. 排查Jenkins运行用户的权限问题

有时候Jenkins用的服务用户没权限读取Delphi的库文件或者你的项目文件,也会报找不到单元的错。你可以:

  • 打开服务管理器,找到Jenkins服务,查看它的登录用户是谁;
  • 用这个用户登录系统,手动跑一遍build.bat,如果也报错,那就是权限或者环境变量的问题,调整权限即可。

4. 同步IDE和命令行的搜索路径

IDE里能编译,说明搜索路径是对的,但命令行编译不会自动用IDE的配置。你可以:

  • 打开项目的Project Options,找到Delphi Compiler下的Search Path,把里面的路径复制出来,加到build.bat的编译命令里(用-U参数);
  • 检查项目里有没有相对路径,确保在Jenkins的工作目录下这些路径是有效的。

内容的提问来源于stack exchange,提问作者Carlos Henrique

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:44