java库加载,Java:使用依赖项加载共享库
这是一个老问题,但我找到了一个可接受的解决方案,也应该是可移植的,我想我应该发布一个答案.解决方案是使用
JNA的
NativeLibrary#getInstance(),因为在Linux上,这将把RTLD_GLOBAL传递给dlopen()(在Windows上不需要).
现在,如果您使用此库来实现Java本机方法,则在调用NativeLibrary#getInstance()之后,还需要在同一个库上调用System.load()(或Sysem.loadLibrary()).
首先,链接到JNA错误:JNA-61
那里的评论说,基本上应该在实际库之前加载依赖关系,以便在JNA中使用,而不是标准的Java方式.我只是复制粘贴我的代码,这是一个典型的场景:
String libPath =
"/path/to/my/lib:" + // My library file
"/usr/local/lib:" + // Libraries lept and tesseract
System.getProperty("java.library.path");
System.setProperty("jna.library.path", libPath);
NativeLibrary.getInstance("lept");
NativeLibrary.getInstance("tesseract");
OcrTesseractInterf ocrInstance = (OcrTesseractInterf)
Native.loadLibrary(OcrTesseractInterf.JNA_LIBRARY_NAME, OcrTesseractInterf.class);
我编写了一个小型库,使用Tesseract为我的Java应用程序提供OCR功能. Tesseract依赖于Leptonica,所以要使用我的库,我需要首先加载库lept和tesseract.使用标准方法(System.load()和System.loadLibrary())加载库不起作用,设置属性jna.library.path或java.library.path也不起作用.显然,JNA喜欢以自己的方式加载库.
这在Linux中适用于我,我想如果设置了正确的库路径,这也适用于其他操作系统.
java库加载,Java:使用依赖项加载共享库相关推荐
- Java引入依赖aar,如何将JAR依赖项包含到AAR库中
摘要: 我有一个依赖于JAR文件的AAR文件,当我构建AAR项目时,它不包含JAR代码. 细节: 我有一个Java SDK库项目,其中包含我们用于Java Web项目的代码,此类库是使用Gradle内 ...
- 使用Java 8.0进行类型安全的依赖项注入
所以我有时真的很想念旧学校的依赖注入. 当Spring仍然"轻量级"时,我们很高兴地使用" 一天学习 " Spring bean xml配置在applicati ...
- linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库
Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...
- linux 符号所在库,linux – 即使nm表示该符号存在于共享库中时,也未引用符号
这可能是错的?我有以下简单的类: #include "libmnl/libmnl.h" int main() { struct mnl_socket *a = mnl_socket ...
- Java引入依赖aar_java – 如何将JAR依赖项包含到AAR库中
概要: 我有一个取决于JAR文件的AAR文件,当我构建AAR项目时,它不包含JAR代码. 细节: 我有一个Java SDK库项目,其中包含我们用于Java Web项目的代码,而且这个库是使用Gradl ...
- Java依赖多个版本,java – Gradle中的多个依赖项版本
要下载同一个库的多个版本: repositories { mavenCentral() } configurations { compile5 compile6 } dependencies { co ...
- linux ubuntu dlopen,linux – 使用dlopen()加载共享库时出错
我正在开发一个程序,在CentOS上使用dlopen加载用户创建的插件.我遇到了一个插件的问题,该插件依赖于也具有依赖关系的共享库: libplugin.so – > libservices.s ...
- VC包含目录、附加依赖项、库目录及具体设置
link 包含目录:#include <headerfile.h>中headerfile.h的搜索目录. 如果有XXX.h找不到,设置这个目录可以解决. 附加依赖项:C++的库会把函数.类 ...
- C++ 包含目录、库目录、附加依赖项详解
在使用opencv库,以及其他库的时候,经常会需要添加包含目录.库目录.附加依赖项等.现做一个总结吧. 1.包含目录 是.h的头文件所在的目录,如果没有正确包含目录,代码中会出现红色的警告,各种未定义 ...
最新文章
- 2022-2028年中国低氧铜杆行业市场研究及前瞻分析报告
- FPGA从Xilinx的7系列学起(6)
- Oracle 块修改跟踪 (Block Change Tracking) 说明
- VSCODE更改文件时,提示:EACCES: permission denied的解决办法(ubuntu16.04虚拟机)
- java网络编程udp_Java网络编程之UDP
- 线性序列机与串口接口DAC驱动设计与验证
- 递归算法思路以及题目总结(未完待续...)
- TypeScript函数
- Error response from daemon: OCI runtime exec failed: exec failed: container_linux.go:345:
- windows平台上编写的python无法在unix_在Windows平台上编写的Python程序无法在Unix平台运行?...
- 黑群晖二合一已损毁_手动修复黑群晖已损毁磁盘空间
- 龙芯3A3000笔记本玩机笔记
- uva 10246 Asterix and Obelix(最短路问题拓展 dijkstra)
- Android compileSdkVersion27+ was not granted this permission: android.permission.WRITE_SETTINGS.
- CGB 2107 2021.8.18 笔记
- 【小狗钱钱】—— 送人生一份理财
- 3.BootLoader引导启动程序
- RoboCup Rescue Simulator Tutorial core
- 滴滴和中国优步合并:滴滴才是唯一赢家?
- 视频流中实时人脸检测
热门文章
- python回文链表_leetcode链表之回文链表
- Linux安装redis最新版5.0.8
- c语言会出现fullgc,以上述代码为基础,在发生过一次FullGC后,上述代码在He
- java实现用户界面的包_在Java中实现用户界面功能的包
- windows7关闭计算机对话框,电脑弹出对话框很烦人怎么办?win7禁止对话框弹出的方法...
- mysql timestamp 晚8小时_mysql插入timeStamp类型数据时间相差8小时的解决办法
- Centos 7 全网备份Rsync
- 文件管理服务器主机,通过BlueHost主机文件管理器上传文件
- 如何让弹窗不影响主界面_如何压缩视频大小不影响画质
- 皮一皮:听说这门专业挺难学...