I had a similar error when trying to run a LWJGL program remotely using VirtualGL. It can be reproduced with the GLGears demo from http://lwjgl.org/demos.php. For the test, I grabbed the files as follows:
wget http://lwjgl.org/webstart/{lwjgl_test,media}.jar
wget http://lwjgl.org/webstart/2.9.1/{lwjgl,lwjgl_util,jinput,native_linux}.jar
unzip native_linux.jar libjinput-linux64.so liblwjgl64.so
The command to run it over VGL:
vglrun java -Dorg.lwjgl.util.Debug=true \
-Djava.library.path=$PWD \
-cp $(echo *.jar | tr ' ' :) \
org.lwjgl.test.opengl.Gears
This gives exactly the error you have:
Could not locate symbol glXEnumerateVideoDevicesNV
Could not locate symbol glXBindVideoCaptureDeviceNV
[LWJGL] Xrandr extension not available
[LWJGL] XF86VidMode extension not available
[LWJGL] No display mode extensions available
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.lwjgl.test.opengl.Gears.init(Gears.java:159)
at org.lwjgl.test.opengl.Gears.execute(Gears.java:85)
at org.lwjgl.test.opengl.Gears.main(Gears.java:76)
Caused by: java.lang.RuntimeException: org.lwjgl.LWJGLException: No display mode extension is available
at org.lwjgl.opengl.Display.<clinit>(Display.java:141)
... 3 more
Caused by: org.lwjgl.LWJGLException: No display mode extension is available
at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:724)
at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
... 3 more
The error comes from src/java/org/lwjgl/opengl/LinuxDisplay.java:199, it looks like it has something to do with mode extensions not being advertised by the X server:
private static int getBestDisplayModeExtension() {
int result;
if (isXrandrSupported()) {
LWJGLUtil.log("Using Xrandr for display mode switching");
result = XRANDR;
} else if (isXF86VidModeSupported()) {
LWJGLUtil.log("Using XF86VidMode for display mode switching");
result = XF86VIDMODE;
} else {
LWJGLUtil.log("No display mode extensions available");
result = NONE;
}
return result;
}
Still in progress of solving the issue.