我正在使用 jogl 库在我的程序中制作漂亮的 3D 绘图。为了在可运行的 jar 中使用它,我使用众所周知的技巧将 dll 从中复制出来并将其放在临时位置(有关详细信息,请参阅 this question ,以及下面提到的 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 中查找并加载 native 库。
在 jar 中使用以下布局:
/natives/<os.and.arch>/libLala1.so
/natives/<os.and.arch>/libLala2.so
https://jogamp.org/wiki/index.php/JogAmp_JAR_File_Handling#Custom_Bundling
关于java - 在可运行的jar中使用jogl,手动加载dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966221/