Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java - Library path error

Tags:

java

path

I'm trying to start my java game but I have some troubles with the java command line:

Here is what I type:

C:\>java -Djava.library.path=%cd%\lib -jar game.jar

And here is what I got:

Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException
    at com.game.Main.main(Main.java:7)
    Caused by: java.lang.ClassNotFoundException: org.lwjgl.LWJGLException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

I can start my game with Eclipse (With Run as Java Application) but after the menu I got the following error:

Exception in thread "Thread-5" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.lwjgl.Sys$1.run(Sys.java:72)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
    at org.lwjgl.Sys.loadLibrary(Sys.java:81)
    at org.lwjgl.Sys.<clinit>(Sys.java:98)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:129)
    at com.game.displaygui.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

lwjgl.jar has been put into the folder \lib.

Could you explain me with I got that?

Thanks.

like image 347
Manitoba Avatar asked Jan 16 '23 23:01

Manitoba


1 Answers

This because lwjgl library is made by two components:

  • the .jar file which contains Java code
  • and the native binary library (which can be .so or .dll or .dylib according to your OS)

The first error you are getting is because you are setting the library path, that should contain the native library, but it does contain the .jar. So you get a java.lang.NoClassDefFoundError because you should set either the library path to the folder that contains native library, either the classpath to contain the real lwjgl.jar file.

The second error that you get with Eclipse is a successive step: your classpath contains the jar library but it is not able to find the native library attached to it, you can fix it in the following way:

enter image description here

like image 165
Jack Avatar answered Jan 23 '23 03:01

Jack