2015-03-08 3 views
15

Ich versuche, die Probe „Hallo Welt“ von der LWJGL WebsiteWie wird dieser JNI-Fehler beim Ausführen von LWJGL "Hallo Welt" gelöst?

Von diesem Link zu laufen: LWJGL "Getting Started"

Ich versuche, dies zu tun, über die Kommandozeile, nur so verstehe ich „, die hinter die Szenen "ein bisschen besser.

Ich habe ohne Fehler kompilieren verwaltet, aber wenn ich versuche, das Programm erhalte ich diesen Fehler laufen:

C:\JavaProjects\LearningLWJGL>java -classpath .;./lib/*.jar -Djava.library.path=C:\Windows\System32 HelloWorld 
Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/glfw/GLFWKeyCallback 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
    at java.lang.Class.getMethod0(Unknown Source) 
    at java.lang.Class.getMethod(Unknown Source) 
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.lwjgl.glfw.GLFWKeyCallback 
    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) 
    ... 7 more 

Irgendwelche Ideen?

Antwort

12

Ein CLASSPATH-Eintrag ist entweder ein Verzeichnis am Anfang einer Pakethierarchie von .class-Dateien oder eine .jar-Datei. Wenn Sie erwarten, dass ./lib alle .jar-Dateien in diesem Verzeichnis enthält, wird dies nicht der Fall sein. Sie müssen sie explizit benennen.

+0

Danke schön. Ich habe die Flagge in "java -classpath.; ./ lib/jlwgl.jar" geändert und ich habe es funktioniert. Ich entschuldige mich, aber ich verstehe immer noch nicht, WARUM dies dazu führte, dass es nicht richtig funktioniert. Wären Sie so freundlich, ein wenig mehr Erklärungen zu geben? – yoonsi

+0

Wenn Sie bemerken, dass ich/.lib nicht verwendet habe, habe ich ./lib/*.jar verwendet (nicht sicher, warum ich nur ein Glas hatte ...) – yoonsi

+2

Der Grund ist offensichtlich, dass das '*. Die JAR-Syntax funktioniert nicht. Ich habe keine Ahnung, was dein letzter Kommentar bedeuten soll oder was er meint, aber ich erwarte, dass * alle * Manieren haben. – EJP

0

Ich hatte das gleiche Problem mit anderen Abhängigkeiten, was mir geholfen hat, den Umfang zu kompilieren.

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>compile</scope> 
    </dependency>