2016-04-20 11 views
2

Ich habe versucht, Gitlab CI zu erhalten, mein LWJGL Projekt ohne Glück zu bauen, nach etwa einer Stunde von Bastelei Ich habe dies als meine .gitlab-ci.yml:LWJGL baut mit Gitlab CI

image: java:8-jdk 
buildtest: 
script: 
- mkdir bin 
- javac -cp dependencies/lwjgl/lwjgl.jar -d bin/ src/*.java 
- cd bin 
- java HelloWorld 

Doch nach schließlich bekommen es richtig zu kompilieren, wenn es darum geht, den Code es wird das folgende Protokoll auszuführen:

$ mkdir bin 
$ javac -cp dependencies/lwjgl/lwjgl.jar -d bin/ src/*.java 
$ cd bin 
$ java 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(Class.java:2701) 
at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
at java.lang.Class.getMethod0(Class.java:3018) 
at java.lang.Class.getMethod(Class.java:1784) 
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: org.lwjgl.glfw.GLFWKeyCallback 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 7 more 

ERROR: Build failed: exit code 1 

es scheint mir, dass es nicht org.lwjgl.glfw.GLFWKeyCallback finden können, aber wenn sie lokal kompiliert es funktioniert gut. Also kann ich nicht herausfinden, was das Problem ist, irgendwelche Ideen?

EDIT:

Nach Herumspielen mit diesem etwas mehr, landete ich versuche, dies auf meiner Maschine und die folgenden Arbeiten in Eingabeaufforderung, aber nicht in einem Shell-Skript und weil Gitlab CI nutzt Linux es nicht funktioniert dort entweder. Hier ist der Shell-Skript, das mir wirklich schnell geschrieben mit dem neuen Fehler zu testen zusammen:

mkdir bin 
javac -cp dependencies/lwjgl/lwjgl.jar -d bin/ src/*.java 
cd bin 
java -cp ../dependencies/lwjgl/lwjgl.jar; -Dorg.lwjgl.librarypath=../dependencies/lwjgl/native/ HelloWorld 

Fehler (ich weiß, seine die Verwendung für java.exe, aber er druckt sowohl die und die Fehler am Ende):

Usage: java [-options] class [args...] 
     (to execute a class) 
    or java [-options] -jar jarfile [args...] 
     (to execute a jar file) 
where options include: 
-d32   use a 32-bit data model if available 
-d64   use a 64-bit data model if available 
-server  to select the "server" VM 
       The default VM is server. 

-cp <class search path of directories and zip/jar files> 
-classpath <class search path of directories and zip/jar files> 
       A ; separated list of directories, JAR archives, 
       and ZIP archives to search for class files. 
-D<name>=<value> 
       set a system property 
-verbose:[class|gc|jni] 
       enable verbose output 
-version  print product version and exit 
-version:<value> 
       Warning: this feature is deprecated and will be removed 
       in a future release. 
       require the specified version to run 
-showversion print product version and continue 
-jre-restrict-search | -no-jre-restrict-search 
       Warning: this feature is deprecated and will be removed 
       in a future release. 
       include/exclude user private JREs in the version search 
-? -help  print this help message 
-X   print help on non-standard options 
-ea[:<packagename>...|:<classname>] 
-enableassertions[:<packagename>...|:<classname>] 
       enable assertions with specified granularity 
-da[:<packagename>...|:<classname>] 
-disableassertions[:<packagename>...|:<classname>] 
       disable assertions with specified granularity 
-esa | -enablesystemassertions 
       enable system assertions 
-dsa | -disablesystemassertions 
       disable system assertions 
-agentlib:<libname>[=<options>] 
       load native agent library <libname>, e.g. -agentlib:hprof 
       see also, -agentlib:jdwp=help and -agentlib:hprof=help 
-agentpath:<pathname>[=<options>] 
       load native agent library by full pathname 
-javaagent:<jarpath>[=<options>] 
       load Java programming language agent, see java.lang.instrument 
-splash:<imagepath> 
       show splash screen with specified image 
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details. 
bash: -Dorg.lwjgl.librarypath=../dependencies/lwjgl/native/: No such file or directory 

ich für eine Tatsache, dass dieses Verzeichnis obwohl existiert, weil ich es mit Eingabeaufforderung auf die folgende Weise erhalten können zu arbeiten:

javac -cp dependencies/lwjgl/lwjgl.jar -d bin/ src/*.java 
cd bin 
java -cp ../dependencies/lwjgl/lwjgl.jar; -Dorg.lwjgl.librarypath=../dependencies/lwjgl/native/ HelloWorld 

Ausgabe von Befehl prompte Version:

E:\test\bin>java -cp ../dependencies/lwjgl/lwjgl.jar; -Dorg.lwjgl.librarypath=../dependencies/lwjgl/native/ HelloWorld 
Hello LWJGL 3.0.0b SNAPSHOT! 

E:\test\bin> 

Antwort

1

Sie müssen den Bibliothekspfad auf den Ordner mit den nativen Dateien einstellen.

java -Dorg.lwjgl.librarypath=path/to/natives HelloWorld 

Sie können die Dateien finden (die Endungen haben .so, .dylib und .dll) im native Ordner der LWJGL Zip-Datei.

+0

Mein nativer Ordner sieht wie folgt aus (https://gyazo.com/77e6d0c087de31f5fed02049ea156be3) und ich änderte meine .gitlab-ci.yml wie folgt: '- java -Dorg.lwjgl.librarypath = dependencies/lwjgl/native/HelloWorld', aber es möchte immer noch nicht korrekt ausgeführt werden, ich bekomme den gleichen Fehler wie oben. – CorruptComputer

+0

Sie cd im Voraus in das 'bin' Verzeichnis, so sollte der Pfad wahrscheinlich' ../ Abhängigkeiten/lwjgl/native/'sein. – javac

+0

Es funktioniert immer noch nicht nach dem Hinzufügen der '../' – CorruptComputer