4

我正在尝试确定是否有一种确定的、推荐的、健壮的方式来使用 Java 和 Maven 中的本机库。

我知道可以通过将库放在正确的位置、配置java.library.path和调用System.loadLibrary等来做到这一点 - 但我想要一个适用于整个开发/部署生命周期并且不涉及大量黑客攻击的适当解决方案。

我的要求似乎相当简单:

  • 100% 通过 Maven 配置
  • 能够包含不同平台/架构的本机依赖项(主要是 Linux 和 Windows,但其他的会很好......)
  • 能够创建一个不需要用户摆弄命令行选项来运行它的可运行文件(即,它将在运行时解压缩并加载它需要的任何本机依赖项,​​最好是临时文件或类似文件.jar
  • 代码在开发期间工作(在 Eclipse 中)
  • 该代码在命令行的正常 Maven 构建期间工作

基本上,我希望本地人在开发期间和在运行时为用户工作

这可能吗?如果是这样,我需要配置什么才能实现?

4

1 回答 1

2

这当然是可能的。我遇到的解决相同问题的一个很好的例子是https://bitbucket.org/xerial/sqlite-jdbc/overview的 sqlite 包装器

通过为每个架构遵循预定义的打包结构,我们可以通过编程方式将所需的本地库从类路径中提取到临时文件夹中,并可以设置所需的 java.library.path 以加载本地库。

  • 所有本机库都将打包在 src/main/resources 文件夹中
  • 在运行时需要有一个引导代码,它可以确定操作系统、架构并选择正确的本地库来提取
  • 相同的引导代码可以将本机库提取到临时文件夹并调用 System.loadLibrary

我没有亲自尝试过执行上述流程,但想不出任何其他方式。

于 2013-10-21T01:41:38.147 回答