나는 WorldWind Java과 Eclipse로 작업하고 있습니다.WorldWind - Runnable jar : java.library.path에 gluegen-rt가 없습니다.
Eclipse에서 내 프로젝트에서 실행 가능한 jar를 내보내려고합니다. 내가 worldwind.jar, jogl.jar, gluegen-rt.jar이 있고, 나는 아무 문제없이 이클립스 프로젝트를 실행할 수 있습니다
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at com.sun.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:102)
at com.sun.gluegen.runtime.NativeLibLoader.access$000(NativeLibLoader.java:51)
at com.sun.gluegen.runtime.NativeLibLoader$1.run(NativeLibLoader.java:70)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.gluegen.runtime.NativeLibLoader.loadGlueGenRT(NativeLibLoader.java:68)
at com.sun.gluegen.runtime.NativeLibrary.ensureNativeLibLoaded(NativeLibrary.java:399)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:163)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:129)
at com.sun.opengl.impl.x11.DRIHack.begin(DRIHack.java:109)
at com.sun.opengl.impl.x11.X11GLDrawableFactory.<clinit>(X11GLDrawableFactory.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at javax.media.opengl.GLDrawableFactory.getFactory(GLDrawableFactory.java:111)
at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:520)
at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:131)
at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:90)
at gov.nasa.worldwind.awt.WorldWindowGLCanvas.<init>(Unknown Source)
: 수출이 잘 간다하지만 난 항아리를 실행하려고하면이 오류가있어 및 gluegen-rt-natives-linux-amd64.jar은 기본 경로 인 .so 파일 위치를 사용하여 빌드 경로에서 참조됩니다. 현재 프로젝트는 gov.nasa.worldwindx.examples.SimplestPossibleExample.java에서와 같이 WorldWind 글로브를 표시하는 JFrame입니다.
여러 OS에서 실행되는 응용 프로그램을 빌드하려고합니다.
이클립스에서 문제없이 프로젝트를 실행할 수있는 동안 내 항아리가 제대로 작동하지 않는 이유는 무엇입니까?
기본 라이브러리가있는 jar 파일을 내보내는 과정에서 문제가 있다고 생각하지만 Google에서 찾은 후에이 문제에 대한 해결책을 찾을 수 없습니다.
OpenJDK를 사용하여 Linux 64 비트에서 실행됩니다.
감사합니다.
편집 :
내가 그것을 작동하게하는 해결 방법을 찾을 수 있지만 내가 그것을하고자하는 방법은 ' "... 수출의 Runnable 항아리"
그것은 이클립스를 보인다 아무튼 jar 파일을 액세스 할 수있는 방식으로 .so 파일을 내보내는 반면, 재구성 된 .jar 파일은 내 보낸 .jar 파일에 포함되어 도달 할 수 있습니다. java -Xmx512m -Dsun.java2d.noddraw=true -Djava.library.path=./lib -jar MyJAR.jar
-Xmx512m
은 다음과 같습니다
이 솔루션은 다음 항아리 다음과 같은 명령 줄을 사용하여 병을 런칭에 폴더에 .so를 파일을 (이 Windows 용 Mac 용 .jnilib 및 .DLL 것)를 포함하는 것이 었습니다 WorldWind가 기본 금액보다 더 많은 메모리를 필요로 할 수 있기 때문에 Java 메모리를 늘리면 -Dsun.java2d.noddraw=true
은 IIRC의 표시 오류를 피할 수 있습니다.
이 명령 줄이 포함 된 .bash 및 .bat 파일을 만들었습니다.
내가 찾은 바에 따르면 .dll 파일이 .jar과 동일한 폴더에있는 한 lib 위치가 Windows에서 requiered 인 것처럼 보이지는 않지만 Linux에서는 항상 필요합니다. 라이브러리를 .jar과 같은 폴더에있는 lib 폴더에 넣었으므로 두 경우 모두 -Djava.library.path
을 설정해야합니다.
리눅스에 대한 필요한 라이브러리
은 다음과 같습니다 : 내가 여기를 발견 libjogl_awt.so libjogl.so libgluegen-rt.so : http://download.java.net/media/jogl/builds/archive/이제 수출 단지 내 Lunix 64 비트에서 잘 실행 시스템과 나는 현재 그것을 테스트하기 위해 Windows와 Mac 시스템을 찾으려고 노력하고있다.
누구나 액세스 할 수있는 솔루션이있는 경우.jar 파일 안에있는 파일들도 여전히 환영합니다.
이건 상당히 좋지 않습니다. 전체적인 아이디어는 모든 gluegen과 jogl을 하나의 큰 runnable jar (uber jar)에 포함시키고 libs와 같은 다른 것없이 사용하는 것입니다. –
하지만 때때로 U는이 요구 사항을 얻습니다. 그래서 Autar가 찾은 해결책은 나를위한 것이 아닙니다. – Romczyk