2023-01-21 250
我当前有一个Java应用程序,该应用程序正在在两个不同平台上的本机库中动态加载Windows和Linux.我有相同的库,针对这两个系统,一个library.dll和一个liblibrary.
我必须将此东西发送给客户,所以我已经将Intellij打包了.msi和.deb工件.现在,与其还将这些软件包与各自的动态库一起发送,并指示客户将它们放在Windows/System32和/usr/lib/Directories中,而是更喜欢这一切都在幕后照顾.我想有某种方法可以将动态库包装到我的.msi或.deb中,并指示这些安装程序将库将库复制到正确的文件夹,但是我担心权限错误和类似的内容.
我已经读到Java 1.8现在支持静态库,但是似乎缺乏关于您应该如何完成此操作的文档.每个人都同意,您需要在库中公开两个新的电话,JNI_OnLoad_LibraryName和JNI_OnUnload_LibraryName,您只能拨打System.loadLibrary(“libraryName”)与往常一样.但是,似乎没有人提及或至少提供有关如何与JVM一起打包静态库的说明.
有关添加此功能的Java文档简单地说明:
本机JVMTI代理可以与VM静态链接.库和VM图像组合的方式取决于实现.
我只是不搜索正确的条款来找出如何将静态本机库包装到JVM中吗?我什至应该打扰静态图书馆吗?我缺少一些更轻松的解决方案吗?
https://www.adamheinrich.com/blog/2012/12/how-to-load-native-jni-library-from-jar/
以下代码以初始化库:
static {
try {
System.loadLibrary("crypt"); // used for tests. This library in classpath only
} catch (UnsatisfiedLinkError e) {
try {
NativeUtils.loadLibraryFromJar("/natives/crypt.dll"); // during runtime. .DLL within .JAR
} catch (IOException e1) {
throw new RuntimeException(e1);
}
}
}
以上所述是小编给大家介绍的如何打包静态加载的JNI库?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26303.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日
扫码二维码
获取最新动态