Java Travis CI-在无头环境中运行LWJGL测试?

Java Travis CI-在无头环境中运行LWJGL测试?,java,libgdx,lwjgl,travis-ci,headless,Java,Libgdx,Lwjgl,Travis Ci,Headless,我正试图在Travis CI上运行一些测试,这些测试需要一个服务器,呃。。。不是无头的。正如你所知,我对这个领域知之甚少,甚至不知道该用什么术语 测试使用LibGDX和LWJGL。它们在我的桌面(Windows 8和Ubuntu)上运行良好,但在Travis CI中失败也就不足为奇了: Could not initialize class org.lwjgl.Sys at org.lwjgl.opengl.Display.<clinit>(Display.java:135)

我正试图在Travis CI上运行一些测试,这些测试需要一个服务器,呃。。。不是无头的。正如你所知,我对这个领域知之甚少,甚至不知道该用什么术语

测试使用LibGDX和LWJGL。它们在我的桌面(Windows 8和Ubuntu)上运行良好,但在Travis CI中失败也就不足为奇了:

Could not initialize class org.lwjgl.Sys
    at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:446)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:118)
无法初始化类org.lwjgl.Sys
在org.lwjgl.opengl.Display上(Display.java:135)
位于com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:446)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:118)

我能对Travis CI做些什么让它认为它有一个合适的显示吗?即使Travis CI无法做到这一点,我是否可以对另一个我有更多控制权的虚拟机采用通用方法?

这可以通过xvfb实现。在travis.yml中,添加以下内容:

before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start

如果您还没有安装xvfb,则必须安装它。您可能还必须在VM上安装测试所需的其他LIB/软件包(例如,对于web应用程序测试,您需要一个浏览器)。

在Travis CI上启动虚拟帧缓冲区(xvfb)是不够的。如果需要OpenGL>1.4,还需要安装libgl1-mesa-swx11、libgl1-mesa-swx11-dev

在我的travis.yml中,我设置了OpenGL并启动了xvfb:

- sudo apt-get install -qq --force-yes mesa-utils libgl1-mesa-swx11 libgl1-mesa-swx11-dev xvfb  
- /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1400x900x24 -ac +extension GLX +render
整个文件位于:

您是否按照Travis CI文档中的建议尝试过类似于
xvfb
的监视器模拟:?谢谢您的提示。它没有解决我的问题(LWJGL似乎没有注意到变化),但它确实给了我一个调查的线索。@Deejay只是想再次与您确认一下。。。你有机会试一下吗?如果有什么错误?我也有同样的问题并尝试了这个答案。我仍然在com.badlogic.gdx.backends.LWJGL.LwjglGraphics.setVSync(LwjglGraphics.java:446)上的线程“LWJGL应用程序”java.lang.ExceptionInInitializerError中得到错误异常原因:org.lwjgl.LWJGLException:没有可用的显示模式扩展