Need help decoding this runtime error

I’ve recently come across a problem which I can’t get to the bottom of. When I try to launch my application, a UnsatisfiedLinkError is thrown at runtime:

[java]
jan 09, 2014 1:15:50 PM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.0.4
jan 09, 2014 1:15:50 PM com.jme3.app.Application handleError
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.UnsatisfiedLinkError: org.lwjgl.opengl.WindowsDisplay.setWindowProc(Ljava/lang/reflect/Method;)V
at org.lwjgl.opengl.WindowsDisplay.setWindowProc(Native Method)
at org.lwjgl.opengl.WindowsDisplay.<clinit>(WindowsDisplay.java:211)
at org.lwjgl.opengl.Display.createDisplayImplementation(Display.java:159)
at org.lwjgl.opengl.Display.<clinit>(Display.java:136)
at com.jme3.system.lwjgl.LwjglDisplay.createContext(LwjglDisplay.java:110)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:113)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207)
at java.lang.Thread.run(Thread.java:744)
[/java]

I don’t understand where this is coming from as it was working fine previously. The code I use to provoke this error is simply

[java]public class TestSimpleApplication extends SimpleApplication {

public static void main(String[] args) {
    TestSimpleApplication app = new TestSimpleApplication();
    app.start();
}

@Override
public void simpleInitApp() {
    System.out.println("Success");
}

}[/java]

Where and what is this org.jwgl package? Is it a part of jME3-lwjgl and/or jME3-lwjgl-natives? If so, these packages are available on my path, so it’s not immediately just a missing resource issue.

Anybody have an idea as to what is going on here? I seem to be completely stuck.

Okay, as usual I solved my own problem within an hour of posting a support ticket.

Make sure that your JAR version and the native library DLL versions are the same when building with maven. Just sayin’.

The latest svn version actually extracts the lwjgl binaries as they are in the maven repo as we’re moving to gradle. However the packaging of both the jogl and lwjgl binaries is a bit silly in their maven repos, they all live at the root of the classpath. So it only works on OSs where the binary names differ, which is luckily the case for the win/mac/linxu troika.

@normen said: The latest svn version actually extracts the lwjgl binaries as they are in the maven repo as we're moving to gradle.

Does it include plans to create and maintain maven artifacts for jme3 itself, or just upgrading build system and staying with old distribution method?

@abies said: Does it include plans to create and maintain maven artifacts for jme3 itself, or just upgrading build system and staying with old distribution method?

Yeah, from 3.1 on we’ll have maven artifacts too, maybe sooner if the move works well and we can move 3.0 stable too