如何从 jar 加载库? 例如
Test.jar
+- libAbc.so
+- libDef.so
+- ...
最佳答案
可能不是您正在寻找的答案(将文件提取到临时位置 是您正在寻找的答案),但我想我会分享一些真实世界的经验:
从 jar 中提取库所需的管道,确保它在之后得到清理,不与可能使用 jar 的其他应用程序冲突,等等......非常棘手。这是可以做到的,但很有可能您最终会导致大量库的临时副本弄乱用户的系统,或者您最终会在使用这些库的多个应用程序之间发生冲突。
当您添加许多操作系统不允许将任何文件用作库的事实时(通常,将运行您的应用程序的用户的权限不允许他们将任意文件标记为用于执行的临时文件夹),将 native 库打包在 jar 中的想法变得不那么吸引人了。
我们最终做的是转移到一个模型,在这个模型中我们有我们的安装程序(确实以足够的权限运行)将适当的 native 库放在 jar 旁边。这做起来相当简单,将所有正在执行的库保存在同一个地方,并且易于管理和理解(试图追踪一个应用程序中的版本不兼容 b/c 它正在尝试加载保存到临时存储的库第二次申请完全是一场噩梦)。
关于java - 从 jar 加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113317/