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

sdnqo3pr  于 11个月前  发布在  Eclipse
关注(0)|答案(1)|浏览(159)

当运行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。

iih3973s

iih3973s1#

答案是使用xvnc来创建一个虚拟xsession。我最终在我的jenkins配置和构建脚本中使用了如下内容:

vncserver :2
export DISPLAY=:2

# other build commands include eclipse

vncserver -kill :2

字符串
这应该适用于任何没有GUI的情况,例如jenkins,cron jobs,没有转发的ssh,nohup,分离的屏幕会话。它通过创建一个可以“显示”窗口的虚拟桌面来工作,或者在这种情况下为X调用提供句柄。

相关问题