- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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/
是否可以编写一个控制台 EXE 应用程序,如“hello, world!”用于 Surface RT? 我以为编译ARM就可以了,但是好像没有这样的编译选项。 我安装了 Office 2013 RT
是否可以编写一个控制台 EXE 应用程序,如“hello, world!”用于 Surface RT? 我以为编译ARM就可以了,但是好像没有这样的编译选项。 我安装了 Office 2013 RT
我尝试在 Clojure 中尽可能快地进行复数数组的乘法运算。 选择的数据结构是两个元素的映射,:re 和 :im,每个元素都是原始 double 的 Java native 数组,用于低内存开销。
目录 1. Ubuntu Pro简介 2. Real-time Ubuntu 3. 订阅Ubuntu Pro 4.
我已经实现了流转换器。请注意,这只是一个练习(为了学习 Dart)。此转换器将整数转换为字符串。我给出下面的代码,你也可以在GitHub上找到它. // Conceptually, a transfo
我正在考虑在使用 RT-PREEMPT(使其实时)修补的 Linux 内核上将 ZeroMQ 设置为消息代理。 基本上我想发布/订阅使用谷歌 Protocol Buffer 序列化的短事件。 1. E
alt-rt.jar中的HashMap有什么区别和 rt.jar。我想我看到了相当大的加速在我的一个应用程序中,解释是什么? 最好的问候 P.S.: 我发现了两个不同的 *.jar在 JDK 1.6.
我知道Surface RT版本只能运行Windows Store应用程序。那么,我可以将自己的 Windows 应用商店应用部署到 Surface RT 并通过 Visual Studio 2012
在我将 Android Studio 更新到 3.0 并按照此 instruction 迁移了我的项目之后 我得到这样的错误: * What went wrong: Execution failed
当 jaxws-rt.jar 已经可用时,我不明白在 rt.jar 中使用 jax-ws 包的“内部”实现。为什么 Sun/Oracle 会做出这样的决定,将 jax-ws 集成到 jdk 中....
介绍 RT-Thread Studio是官方出品的一款专门针对RT-Thread嵌入式开发、部署、调试、测试的集成开发环境,它基于Eclipse开源项目开发,极大的提高了嵌入式开发者的开发效率,目前
在 .NET Web 应用程序的负载测试期间监视性能计数器时,一个名为“RT 检查时间百分比”的计数器不断超过默认临界阈值 10。 为什么花费大量时间进行运行时检查是不好的? 这对我们的应用程序有何影
我正在寻找支持 UML-RT 的建模工具,但我找不到。 我已经拥有 MS Visio (2010)、Power Designer (2008) 和 Rational Rose,但似乎它们都不包含 UM
rt linux 中的客户端和服务器通信。客户端发送数据,服务器接收数据。客户端和服务器之间使用UDP进行通信。当服务器(rt linux)从客户端接收到数据时,内核应该停止正在做的事情并开始执行新到
rt linux 中的客户端和服务器通信。客户端发送数据,服务器接收数据。客户端和服务器之间使用UDP进行通信。当服务器(rt linux)从客户端接收到数据时,内核应该停止正在做的事情并开始执行新到
我正在尝试在我的应用程序中对某些帧进行双重缓冲。但是,双缓冲要求我根据我试图保留额外数据 block 的区域更改 Texture2D 大小。 为双缓冲区的每个区域请求一个新的 CreateTextur
我正在学习如何使用 RT 计时器创建周期性事件。我尝试使用这个基于 timer_create 文档示例的示例。 预期的行为是每 5 秒产生一个周期性事件,同时主执行休眠 30 秒,但我得到以下行为。
一、基本信息 MCU:STM32F103ZET6 RT-Thread:5.0.2 LVGL:8.3.11 LCD:ST7735s 编译环境:RTThread studio
我向 rt 索引添加了新字段,如何重建它?如果我做截断 rtindex 新字段不添加。我是从desc rtindex看到的。我应该停止 sphinx 服务并取消链接所有索引文件然后重新索引吗? 最佳答
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我是一名优秀的程序员,十分优秀!