2023-01-19 352
我希望使用Maven添加一个JNI库,包括其共享对象(.SO)文件.不幸的是,它尚未在公共存储库上,所以我想我必须在本地存储库上安装它才能使其正常工作.
我如何将Maven中的本机部分包括在我的项目中捆绑在一起(并最终导出了复制依赖性插件).这是一个标准的J2SE应用(不是Web应用程序),带包装.jar?
我要添加的库是 junixsocket ,以防万一它有助于知道.
它具有.so(本地库)组件和Java .jar组件.
我遇到 Maven-nar-Plugin 本地构建,但似乎更倾向于通过代码构建JNI项目,而不是捆绑第三方JNI库,我无法将拼图拼图拼凑在一起.
我如何处理:
谢谢.
我的方法:
put .so用特定于平台的分类器将文件归档到存储库,例如:sqlite3-3.7.9-linux-x86_64.so.
为所有必需的平台添加.so依赖项:
<dependency>
<groupId>de.ch-werner</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.9</version>
<type>so</type>
<classifier>linux-x86_64</classifier>
</dependency>
使用此Maven Assembly插件配置将所有本机Libs放入您的目录中:
<dependencySet>
<outputDirectory>lib/native</outputDirectory>
<outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
<unpack>false</unpack>
<useProjectArtifact>false</useProjectArtifact>
<useStrictFiltering>false</useStrictFiltering>
<includes>
<include>*:*:dll:*</include>
<include>*:*:so:*</include>
<include>*:*:jnilib:*</include>
</includes>
</dependencySet>
使用此类将libs加载到应用启动上(计划将分类器命名为 gnu trigets ):
CtzJniUtils.loadJniLibsFromStandardPath(Launcher.class, "sqlite3")
我在加载它之前将.so在jar中包含在jar中,并在平台特定的共享库中加入.这样,它就像其他任何罐子一样部署.
一个项目的一个示例
https://github.com/peterlawrey/java-thread-thread-affinity
要看的主要课程是 https://github.com/peterlawrey/java-thread-thread-affinity/blob/blob/master/src/src/main/java/java/java/java/highererfrequequequencytrading/-
作为在运行时解开库的替代方法,您可以将它们作为罐子存储在Maven中,但在构建时间解开包装: http://www.buildanddeploy.com/node/17 .
maven-nativedendependendencies-plugin 插件将自动为您做到这一点您遵循他们的命名约定.
以上所述是小编给大家介绍的将JNI库添加到本地Maven存储库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25758.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态