Ubuntu系统下通过Jenkins Shell运行Java程序报错求助
问题分析
从报错日志能明确核心问题:首先无法切换到指定目录 /home/ironman/Desktop/GitDemo2,后续找不到Java源文件、主类都是这一问题引发的连锁反应。
解决方案
1. 验证目标目录的有效性
先在Ubuntu终端执行以下命令,确认目录是否真实存在:
ls -ld /home/ironman/Desktop/GitDemo2
如果输出提示No such file or directory,说明路径拼写错误,直接修正Shell命令里的目录路径即可。
2. 赋予Jenkins用户目录访问权限
Jenkins默认以jenkins系统用户运行,该用户大概率没有访问/home/ironman/Desktop/目录的权限,可通过两种方式解决:
- 直接开放目录的公共访问权限:
sudo chmod o+rx /home/ironman/ sudo chmod o+rx /home/ironman/Desktop/ sudo chmod o+rx /home/ironman/Desktop/GitDemo2/
- 将Jenkins用户加入
ironman用户组(更安全的方式):
sudo usermod -aG ironman jenkins
执行完上述命令后,重启Jenkins服务生效:
sudo systemctl restart jenkins
3. 移除Shell命令中的sudo
使用sudo编译会让生成的.class文件归属root用户,后续Jenkins用户运行时会因权限不足无法读取,还会干扰Java环境变量。修改后的Shell命令应为:
cd /home/ironman/Desktop/GitDemo2 javac Hello.java java Hello
4. 可选:排查Java环境与文件存在性
如果上述步骤仍未解决问题,可在Shell命令开头添加验证环节,确认Jenkins环境的Java可用性和目标文件状态:
which javac which java java -version cd /home/ironman/Desktop/GitDemo2 ls -l Hello.java javac Hello.java java Hello
内容的提问来源于stack exchange,提问作者kuldeep singh
相关产品推荐
相关产品推荐

