【问题标题】:Running P3D Processing sketch in JAR file, using Netbeans使用 Netbeans 在 JAR 文件中运行 P3D 处理草图
【发布时间】:2020-07-02 19:46:58
【问题描述】:

我知道有一种方法可以在外部 IDE 中使用 Processing P3D 进行编程。

我已经成功地能够在 NetBeans IDE 中运行 2D 和 P3D 草图。但是,如果我在我的草图中使用 Processing P3D 将项目构建为 JAR 文件,并尝试运行该 JAR 文件,我会收到此错误:

    java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\*****\natives\windows-i586\\gluegen-rt.dll

我该怎么做才能使处理 P3D 草图在 JAR 文件中运行? 我知道这与处理使用的 JOGL 库有关,但我不知道如何满足错误。


草图在 netbeans 中运行良好:

Processing P3D sketch running fine in netbeans 11.2

Sketch 在 Windows Powershell 中作为 JAR 文件运行...:

Processing P3D sketch running as JAR file in Windows Powershell

完全错误:

    java.lang.UnsatisfiedLinkError: Can't load library: C:\Users\*****\natives\windows-i586\\gluegen-rt.dll
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
        at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
        at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
        at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
        at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
        at com.jogamp.common.os.Platform$1.run(Platform.java:317)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
        at com.jogamp.nativewindow.NativeWindowFactory$2.run(NativeWindowFactory.java:183)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.nativewindow.NativeWindowFactory.<clinit>(NativeWindowFactory.java:180)
        at com.jogamp.newt.NewtFactory$1.run(NewtFactory.java:68)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.newt.NewtFactory.<clinit>(NewtFactory.java:65)
        at processing.opengl.PSurfaceJOGL.initIcons(PSurfaceJOGL.java:498)
        at processing.opengl.PSurfaceJOGL.initFrame(PSurfaceJOGL.java:134)
        at processing.core.PApplet.initSurface(PApplet.java:11035)
        at processing.core.PApplet.runSketch(PApplet.java:10922)
        at processing.core.PApplet.main(PApplet.java:10657)
        at processing.core.PApplet.main(PApplet.java:10639)
        at com.JSF.processing.Main.main(Main.java:16)

【问题讨论】:

  • 您需要修改项目的 Ant 脚本,将 jogamp-fat.jar 的内容包含到您的 fat JAR 中。你可以看看我的脚本,尤其是名为“create-jars”的目标:svn.code.sf.net/p/tuer/code/pre_beta/build.xml
  • 顺便说一下,我在JNDT中使用了nsis-ant,也许对你有帮助...
  • 好的。我的项目正在使用 Maven。那么我将如何做到这一点/我能在 Maven 中做到这一点吗?
  • 也许使用 Maven 是可行的,但它可能非常复杂,因为它不是执行此操作的正确工具。当您需要更灵活的东西时,请使用 Ant 或 Gradle。我用这三个工具,我不是很偏颇。

标签: opengl netbeans processing jogl


【解决方案1】:

好的!我想到了!我将所有的 JAR 文件放到一个文件夹中,并通过 Ant 将它们添加到类路径中。

接下来我使用 ant 创建了一个胖 JAR,其中包含类路径中的所有类,包括源代码

我在 Windows powershell 中运行了 Jar,它运行良好!

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2023-03-17
    相关资源
    最近更新 更多