2016-04-20 7 views
2

を構築します。LWJGLは私が工夫の程度時間後、私は私の.gitlab-ci.ymlとしてこれを持って、運と私LWJGLプロジェクトをビルドするためにGitLab CIを取得しようとしてきたGitLab CI

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

しかし最終的にはそれはそれは次のログを取得するコードを実行する時間が来るとき、それは、正しくコンパイルするために取得した後:

$ 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 

正常に動作しますローカルでコンパイルされた場合、それはしかし、org.lwjgl.glfw.GLFWKeyCallback見つけることができないように私には思えます。だから私は問題が何であるか、どんな考えを理解することができないのですか?

はEDIT:このいくつかの詳細をいじり後

、私はなく、シェルスクリプトで、それが動作しませんGitLab CIは、Linuxを使用しているので、私のマシン上でこれをしようとすると、コマンドプロンプトで、次の作品終わりましたそこにも。

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 

エラー(私はのjava.exeのためのその使用方法を知っているが、それは最後に両方のことやエラーを出力):ここでは はシェルスクリプトである私は、新しいエラーと一緒にテストするために迅速本当の書きました:

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 

私は私が得ることができるので、それは、コマンドプロンプトで次のように動作するものの、このディレクトリが存在するという事実を知っている:コマンドから

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 

出力プロンプトバージョン:

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> 

答えて

1

ネイティブファイルを含むフォルダにライブラリパスを設定する必要があります。

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

あなたはLWJGL zipファイルのnativeフォルダ内(語尾.so.dylib.dllを持っている)ファイルを見つけることができます。

+0

私のネイティブフォルダは[this](https://gyazo.com/77e6d0c087de31f5fed02049ea156be3)のようになり、私は.gitlab-ci.ymlを次のように変更しました: ' - java -Dorg.lwjgl.librarypath = dependencies/lwjgl/native/HelloWorld'、それでも正しく実行したくない場合は、上記と同じエラーが表示されます。 – CorruptComputer

+0

あなたはあらかじめ 'bin'ディレクトリに移動します。そのため、パスはおそらく' ../ dependencies/lwjgl/native/'になるはずです。 – javac

+0

'../' – CorruptComputer

関連する問題

 関連する問題