Java / Maven中本机库的工作流程

时间:2013-10-21 01:14:36

标签: java linux eclipse maven native

如果有一种明确的,推荐的,健壮的方式来处理Java和Maven中的本机库,我正在努力解决这个问题。

我知道可以通过将库放在正确的位置,配置java.library.path和调用System.loadLibrary等来实现这一点 - 但我想要一个适用于整个开发/部署生活的适当解决方案 - 循环,并没有涉及很多黑客。

我的要求似乎相当简单:

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

基本上,我希望本地人在开发过程中只是工作,并且在运行时为用户提供。

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

1 个答案:

答案 0 :(得分:2)

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

的sqlite包装器

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

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

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