未登录时在没有 GUI 的情况下运行 eclipse CDT 构建时出现问题(例如使用 jenkins 或 nohup)

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

为 Eclipse CDT 项目运行无头构建时(通过

nohup
、分离的
screen
会话和 jenkins 尝试),构建失败并出现以下错误(缩短为第一个相关行):

org.eclipse.ui.ide unable to load class org.eclipse.ui.internal.ide.misc.FileInfoAttributesMatcher
...

如果我正常登录,构建会成功运行,但如果我注销,构建会失败(这是

nohup
/
screen
/jenkins 的目标)。看起来构建失败了,因为它没有 xserver,或者无法访问它。我正在运行的命令类似于:

eclipse 
    --launcher.suppressErrors \
    -nosplash \
    -application org.eclipse.cdt.managedbuilder.core.headlessbuild \
    -data /path/to/workspace

搜索周围我发现了一些建议我更改 jenkins 的 cron 设置,或重新设计 eclipse 项目,但同一个项目是通过 jenkins 在不同的环境中由运行相同构建脚本的用户构建的。同样奇怪的是,如果我通过

nohup
或独立的
screen
会话运行它,它也会以同样的方式失败,但前提是我注销。运行任意一个,注销成功。

我正在 RHEL 8 中运行。

c linux eclipse jenkins eclipse-cdt
1个回答
0
投票

答案最终是

DISPLAY
环境变量。当我没有登录时它是空的或无效的。我设置它:

export DISPLAY=localhost:10.0

在我的詹金斯工作脚本中解决了这个问题(至少对于詹金斯建设而言)。当寻找在 PC 上运行的 xserver 时,我通过 ssh 登录到 PC 并检查了

DISPLAY
变量。

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