Minecraft 1.8.2 – ArrayIndexOutOfBoundsException at LinuxDisplay.getAvailableDisplayModes()
I tried to play minecraft 1.8.2 this evening, only to have it crash on every startup with :
Time: 19/02/15 18:58 Description: Initializing game java.lang.ExceptionInInitializerError at avf.ar(SourceFile:560) at avf.am(SourceFile:361) at avf.a(SourceFile:310) at net.minecraft.client.main.Main.main(SourceFile:124) Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:951) at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738) at org.lwjgl.opengl.Display.(Display.java:138) ... 4 more
The cause seems to be the move from lwjgl 2.9.1 to 2.9.4 with Minecraft 1.8.2.
After a lot of debugging and swearing from me, Steve found out that it was an issue with my dual monitors. Installing xrandr fixes lwjgl and then allows minecraft to start.
The issue comes from this line in the XRandR class which doesnt throw any exception when the command isnt available. Parsing command line output from a child process in Java is really a bad idea.
Warning
/** * Utility for working with the xrandr commmand-line utility. Assumes * xrandr v1.2 or higher. */
February 21st, 2015 at 5:33 pm
Thank you so much for this! Minecraft was working fine on our home Linux machines until a few days ago. My son tried to launch Minecraft today and it kept crashing with the same Java trace you show in this blog post. Installing the xorg-xrandr package (the machine where this was happening runs ArchLinux) fixed the problem. This is a laptop and I have no extra monitors, though.
The Java crash trace and the error messages are pretty obscure, in my opinion, so I think I got lucky that I found your blog post and the hint to install xrandr.
Thanks again!
February 22nd, 2015 at 8:10 am
Thanks for the info, it let me play Minecraft again 🙂
April 2nd, 2015 at 7:13 pm
I’m having this problem now with minecraft 1.8.3 (tried both Java 7 and Java 8). I’ve checked that the xrandr command works. Any other ideas? Thanks.
April 2nd, 2015 at 9:13 pm
I’ve cooked up a hack for this:
http://www.minecraftforum.net/forums/support/unmodified-minecraft-client/2395303-arrayindexoutofboundsexception-in-lwjgl
Basically, my xrandr was showing two “connected” displays (my VGA port shows up, even when there isn’t anything physically connected to it) and that must have been giving lwjgl trouble. I wrote a script named ‘xrandr’ to filter (so to speak) the output of the real xrandr command, then modified my Minecraft launch script to juggle the path so the Minecraft JVM picks up the filtered command instead of the real one.
December 22nd, 2015 at 12:43 am
Sir, thank you very much!
I am on Gentoo, and I haven’t had installed xrandr. After a recent update I got a.m. crash report, and was already getting mad when I eventually found this post!
Now, I am sane again and can play Minecraft w/o probs. 🙂
Thx.
January 3rd, 2016 at 9:55 pm
Thank you so much for this!
It seems to happen with any java application using Lwjgl on an xorg-server while using more than one monitor without xrandr.
January 13th, 2016 at 5:11 pm
Thanks!
This really had me stumped! Installing xorg-xrandr in Arch solved my problem
March 6th, 2016 at 8:23 pm
I already have xrandr installed, but it still does not work, what should I do?
March 23rd, 2016 at 9:07 am
You can try running
type xrandr
or
which xrandr
to check that xrandr command is in your PATH.
If you run xrandr from a shell does it work correctly? I.e. show you screen resolutions, if not you may need to reinstall it.