Solution:
This kind of error is common for LWJGL starters. The OpenGL context gets bound to a thread when it's been created. So you can only access this context from the same thread.
Explanation:
As it does not look that you're working with different threads there might be another cause. Slick2D seems to need a valid OpenGL context for its Image
class.
So my first try would be to initialize an OpenGL context before initializing your card images.
Another Reason for occuring this error may be
This happened to me once, and I couldn't figure out what to do until I realized I was calling the image loader before OpenGL had initialized. Make sure that you aren't defining any variables with an image loader in the constructor(or any other method called) before OpenGL inits(what I did).
If you are not able to find solution yet then try this
In lwjgl 3.x and higher
GLContext.createFromCurrent();
If you're using libgdx, there is also
Gdx.app.postRunnable(...)
to post a
Runnable
on the render thread.
You can add old thread depending on which LWJGL you're using, init your Display:
LWJGL 3 (uses GLFW):
if (!glfwInit()) {
throw new IllegalStateException("Can't init GLFW");
}
LWJGL 2:
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
} catch (LWJGLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
Never forget
Display.create() :)