Java 在runnable jar中使用jogl,手动加载dll

Java 在runnable jar中使用jogl,手动加载dll,java,dll,jogl,executable-jar,Java,Dll,Jogl,Executable Jar,我正在使用jogl库在我的程序中制作漂亮的3D绘图。为了在一个可运行的jar中使用它,我使用了一个众所周知的技巧,从中复制dll并将其放在一个临时位置(有关详细信息,请参阅下面提到的loadLib函数) 问题是,我不断收到不满意的链接错误: static { mylogger().info("Loading jogl DLL"); // we need to put both DLLs to temp dir String path = "MYA

我正在使用jogl库在我的程序中制作漂亮的3D绘图。为了在一个可运行的jar中使用它,我使用了一个众所周知的技巧,从中复制dll并将其放在一个临时位置(有关详细信息,请参阅下面提到的loadLib函数)

问题是,我不断收到不满意的链接错误:

static {
        mylogger().info("Loading jogl DLL");

        // we need to put both DLLs to temp dir
        String path = "MYAPP_" + new Date().getTime();
        try {
            loadLib(path, "gluegen-rt");
            loadLib(path, "jogl");
            loadLib(path, "jogl_cg");
            loadLib(path, "jogl_awt");
            libraryLoaded = true;
        } catch(UnsatisfiedLinkError e) {
            mylogger().error("Cannot load JOGL libraries: "+e.getMessage());
        }
}
那么,所包含的库的顺序是否有问题?如何找出不满意链接错误的原因?

如果使用JogAmp“Fat Jar”布局,则JOGL和Gluegen将从可运行Jar中查找并加载本机库

在jar中使用以下布局:

 /natives/<os.and.arch>/libLala1.so
 /natives/<os.and.arch>/libLala2.so
/natives//libLala1.so
/本地人//libLala2.so

如果使用JogAmp“Fat Jar”布局,那么JOGL和Gluegen将从可运行Jar中查找并加载本机库

在jar中使用以下布局:

 /natives/<os.and.arch>/libLala1.so
 /natives/<os.and.arch>/libLala2.so
/natives//libLala1.so
/本地人//libLala2.so

您知道缺少哪个库吗?你检查了正确的路径了吗?@Thomas:没有,它没有告诉我库丢失了什么信息。
未满足链接错误的消息是什么?您是否在每个
loadLib()
调用周围放置了一个单独的try-catch块,以便查看它的确切抛出位置(或以某种方式进行调试)?您知道缺少哪个库吗?你检查了正确的路径了吗?@Thomas:没有,它没有告诉我库丢失了什么信息。
未满足链接错误的消息是什么?您是否在每个
loadLib()
调用周围放置了一个单独的try-catch块,以便查看它的确切抛出位置(或以某种方式进行调试)?