2015-03-08 45 views
15

sto cercando di eseguire l'esempio "Ciao Mondo" dal sito LWJGLCome risolvere questo errore JNI durante il tentativo di eseguire LWJGL "Hello World"?

Da questo link: LWJGL "Getting Started"

sto cercando di farlo attraverso la linea di comando, solo così ho capito il "dietro le scene "un po 'meglio.

Sono riuscito a compilare senza errori, ma quando provo a fare funzionare il programma sto ottenendo questo errore:

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 

Tutte le idee?

risposta

12

Una voce CLASSPATH è una directory all'inizio di una gerarchia di pacchetti di file .class o un file .jar. Se ti aspetti che ./lib includa tutti i file .jar in quella directory, non lo sarà. Devi nominarli esplicitamente.

+0

Grazie gentilmente. Ho cambiato la bandiera in "java -classpath.; ./ lib/jlwgl.jar" e ho funzionato. Mi scuso ma continuo a non capire PERCHÉ questo non ha funzionato correttamente. Saresti così gentile da offrire qualche spiegazione in più? – yoonsi

+0

Se noterete che non ho usato juse ./lib, ho usato ./lib/*.jar (non sono sicuro del motivo per cui ho preso in considerazione solo un jar ...) – yoonsi

+2

Il motivo ovviamente è che il '*. la sintassi jar' non funziona. Non ho idea di cosa dovrebbe significare il tuo ultimo commento, o di cosa si riferisce, ma mi aspetto che * tutti * abbiano delle buone maniere. – EJP

0

Ho avuto lo stesso problema utilizzando diverse dipendenze ciò che mi ha aiutato è impostare l'ambito di compilazione.

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