【发布时间】:2014-02-13 03:39:55
【问题描述】:
我正在尝试为我的项目创建一个使用 JOGL 的可执行 jar。以前没有 JOGL,使用 maven-assembly-plugin 很容易。我的应用程序 pom 中有以下内容:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.jbox2d.testbed.framework.jogl.JoglTestbedMain</mainClass>
</manifest>
</archive>
</configuration>
在非 jogl 项目中,这会生成一个不错的 jbox2d-testbed-2.2.1.2-SNAPSHOT-jar-with-dependencies 可执行文件(当然,其中包含不同的主类)。
JOGL 项目使用 mavin 插件在 Eclipse 中运行良好,我包含了 jogl 依赖项,如 here in the wiki 所述。但是,当我在此项目上使用程序集插件并启动 jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies.jar 时,出现以下错误:
Catched FileNotFoundException: /Users/dmurph/Projects/jbox2d/jbox2d-testbed-jogl/target/jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies-natives-macosx-universal.jar (No such file or directory), while addNativeJarLibsImpl(classFromJavaJar class com.jogamp.common.os.Platform, classJarURI jar:file:/Users/dmurph/Projects/jbox2d/jbox2d-testbed-jogl/target/jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies.jar!/com/jogamp/common/os/Platform.class, nativeJarBaseName jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies-natives-macosx-universal.jar): [ file:/Users/dmurph/Projects/jbox2d/jbox2d-testbed-jogl/target/jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies.jar -> file:/Users/dmurph/Projects/jbox2d/jbox2d-testbed-jogl/target/ ] + jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies-natives-macosx-universal.jar -> slim: jar:file:/Users/dmurph/Projects/jbox2d/jbox2d-testbed-jogl/target/jbox2d-testbed-jogl-1.0.2-SNAPSHOT-jar-with-dependencies-natives-macosx-universal.jar!/
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /System/Library/Frameworks/gluegen-rt.Framework/gluegen-rt
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:551)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:64)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:96)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:414)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:388)
at com.jogamp.common.os.Platform$1.run(Platform.java:203)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:173)
at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:82)
at org.jbox2d.testbed.framework.jogl.JoglPanel.<init>(JoglPanel.java:52)
at org.jbox2d.testbed.framework.jogl.JoglTestbedMain.main(JoglTestbedMain.java:62)
当我解压 jar 时,我看到了 JOGL 所需的所有 dll 和 jnilib 库,那么我需要做些什么才能让它工作吗?我知道 JOGL 使用单独的 jar 系统,我是否需要更改程序集插件的行为以便它可以正确生成额外的 jar?
如果您愿意,可以获取我的项目并尝试一下,它位于https://github.com/dmurph/jbox2d
谢谢!
【问题讨论】:
标签: java maven jogl maven-assembly-plugin