在Java项目中,我正在使用第三方库,该第三方库通过

System.loadLibrary("libName");

我希望能够从我的应用程序中影响此方法的搜索路径,以便用户无需在命令行上指定正确的java.library.path值(此值取决于当前操作系统)和建筑)。例如在Windows上,我想将其设置为“

lib / native / windows”,在Linux 32bit上,将其设置为“ lib / native / linux32”等。

我试过了

System.setProperty("java.library.path", ...)

但这被忽略了,这显然是因为JVM在我的代码运行之前仅读取了此属性一次。

我还尝试在使用依赖于它的Java库之前加载本机libray

System.load("fullPath/lib")

此调用成功,但是当使用System.loadLibrary()再次加载本机库时,仍然会出现UnsatisfiedLinkError。

我发现的唯一方法是:

添加抽象外部库的整个API的接口。

在其余的代码中仅使用这些接口。

添加实现接口并委托给库的类。

编写自己的ClassLoader, 覆盖findLibary(),以便在正确的路径中找到本机库

覆盖loadClass()并单独加载外部库和包装器层的所有类,而不是像默认的ClassLoader那样尝试委托给其父类

确保使用普通的ClassLoader加载接口,并且包装类和外部库使用我自己的ClassLoader加载。

这行得通,但是我发现它非常复杂并且需要很多努力,因为我需要添加所有这些接口。有没有更简单的方法?

java loadlibrary 路径_如何通过Java代码影响System.loadLibrary()的搜索路径?相关推荐

  1. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  2. java string 字典序_[小白问题] Java 中路径 String 的字典序排序

    最近在用不太熟悉的 java 写点项目,有个需求需要把以"."分隔的路径按照每个子路径的字典序排序,例如: python: arr = ["a.b.c", &q ...

  3. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  4. java 配置文件配置路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设置. 那么我们需要读取配置文件, ...

  5. Java函数编码_转[收集java的常用函数代码]

    转[收集java的常用函数代码] package net.java2000.tools; /** * Title:        Java Bean 工具 * Description: * Copyr ...

  6. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  7. linux 查看java版本和路径_在linux中查看jdk的版本以及安装路径

    如何在一台Linux服务器上查找JDK的安装路径呢? 有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢? 下面总结了一下如何查找JDK安装路径的方法. 1:echo $JAVA_HOME 使 ...

  8. java获取当前项目相对路径_怎样在JAVA文件中获取该项目的相对路径

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...

  9. java图遍历求最长路径_如何在Java中使用递归实现矩阵中最长路径的返回

    我正试图用递归来解决这个问题. 问题是:对于二维正整数数组,我如何返回最长路径(步骤),以便最长路径的每个单元格中的值是从整数的降序序列开始的,并且每个单元格和单元格之间的差异是一个给定的数字(num ...

最新文章

  1. ubuntu, debian 安装redis,设置开机自动启动和密码,允许外网访问
  2. mysql5.7.24免安装版配置及密码初始化及mysql-font连接异常
  3. rocketmq常用命令
  4. 三七互娱上半年近九成营收来自手游 精品化优势凸显
  5. python 图片相似度算法比较_python 比较2张图片的相似度的方法示例
  6. 速成pytorch学习——2天
  7. ajax中设置请求头和自定义请求头
  8. activex java 控件_swt java 内嵌ActiveX控件
  9. Download ebook from Syngress Publishing
  10. 《西游降魔篇》[BD-RMVB.720p.国语中字][2013年奇幻冒险喜剧]
  11. sw2014计算机配置,SolidWorks 2014电脑配置要求
  12. android 分区 PT,Android:pt 、sp、dp之间的换算
  13. 钟汉良日记:2年10个月后第一次坐车回家
  14. 网易2019实习生招聘编程题解答
  15. IMX6ULL与IMX6UL异同(主要是优化了其成本:安全功能减低,优化功耗EMC SIM模块删除等与但和I.MX6UltraLite芯片是PIN-2-PIN兼容的)
  16. CUDA中Occupancy相关知识
  17. Python爱因斯坦阶梯问题
  18. CSR蓝牙芯片修改RF传输功率的方法
  19. 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。
  20. 硅谷首富:拉里 埃里森 1

热门文章

  1. 你相信吗?黑客通过浏览器也能控制你的电脑
  2. cocharan-Armitage trend test
  3. TCP三次握手中,为什么需要第三次握手?
  4. 加油站以后还能叫加油站吗?
  5. 经典好诗 词。。。。。
  6. 工单系统是什么?工单系统有什么功能?
  7. Pytorch模型训练实用教程学习笔记:四、优化器与学习率调整
  8. 云课堂如何培养下一代创新思辨的能力?
  9. pycharm 升级包版本
  10. C++解题报告:详解经典搜索难题——八数码问题( 双向BFS A* 求解)