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

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

我知道可以通过将库放在正确的位置,配置java.library.path并调用System.loadLibrary等来实现这一点 – 但我想要一个适用于整个开发/部署生命周期的适当解决方案而不是涉及很多黑客攻击.

我的要求似乎相当简单:

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

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

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

最佳答案 这当然是可能的.我遇到的一个很好的例子解决了同样的问题,是
https://bitbucket.org/xerial/sqlite-jdbc/overview的sqlite包装器

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

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

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

点赞