gpt4 book ai didi

java - WorldWind - 可运行 jar : no gluegen-rt in java. library.path

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:55 25 4
gpt4 key购买 nike

我正在使用 WorldWind Java和 Eclipse。

我正在尝试从 Eclipse 中的项目导出可运行的 jar。导出很顺利,但是当我尝试运行 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)

我可以在 Eclipse 中毫无问题地运行该项目,我在构建路径中使用本地库引用了 worldwind.jar、jogl.jar、gluegen-rt.jar 和 gluegen-rt-natives-linux-amd64.jar .so 文件位置。目前,该项目只是一个显示 WorldWind 地球仪的 JFrame,如 gov.nasa.worldwindx.examples.SimplestPossibleExample.java 中所示。

我正在尝试构建一个可以在多个操作系统上运行的应用程序。

当我可以在 Eclipse 中毫无问题地运行项目时,我的 jar 无法运行我做错了什么?

我想我在使用本地库导出 jar 的过程中遇到了问题,但在 Google 上查找后我找不到解决方案。

我在 Linux 64 位和 OpenJDK 上运行。

谢谢。


编辑:

我找到了一种解决方法,但不是我希望的那样:

Eclipse 的“Export Runnable Jar ...”似乎没有以一种在我运行 jar 时可以访问的方式导出 .so 文件,而所需的 .jar 文件包含在导出的 .jar 中并且可以访问.

解决方案是在 jar 旁边的文件夹中包含 .so 文件(这些文件对于 Mac 是 .jnilib,对于 Windows 是 .dll)并使用以下命令行启动 jar:java -Xmx512m -Dsun .java2d.noddraw=true -Djava.library.path=./lib -jar MyJAR.jar

-Xmx512m 正在增加 java 内存,因为 WorldWind 可能需要比默认数量更多的内存,-Dsun.java2d.noddraw=true 可以避免一些显示错误 IIRC。

我制作了包含此命令行的 .bash 和 .bat 文件。

根据我的发现,只要 .dll 文件与 .jar 位于同一文件夹中,在 Windows 上似乎不需要设置 lib 位置,但在 Linux 上始终需要。由于我将库放在与 .jar 相同的文件夹中的 lib 文件夹中,因此在这两种情况下我都需要设置 -Djava.library.path

Linux 所需的库是:libgluegen-rt.solibjogl.solibjogl_awt.so

我在这里找到了那些:http://download.java.net/media/jogl/builds/archive/

现在导出的 jar 在我的 Lunix 64 位系统上运行良好,我目前正试图找到 Windows 和 Mac 系统来测试它。

如果有人有访问 .jar 文件中的 .so 文件的解决方案,我们仍然欢迎。

最佳答案

你看过一 jar 吗?它有一个将 native 库打包到应用程序 jar 中的系统。

http://one-jar.sourceforge.net/index.php?page=details&file=native

关于java - WorldWind - 可运行 jar : no gluegen-rt in java. library.path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10995894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com