有些时候需要使用到本地类库来实现一些功能,比如在linux下使用jni去访问so库文件,这个时候就需要涉及库文件的加载。本文介绍一下如何动态加载库文件,即把库文件放到工程项目里头,方便工程的可移植性,然后在运行时去加载。

public class LibLoader {public static void loadLib(String libName) {String resourcePath = "/" + libName;String folderName = System.getProperty("java.io.tmpdir") + "/lib/";File folder = new File(folderName);folder.mkdirs();File libFile = new File(folder, libName);if (libFile.exists()) {System.load(libFile.getAbsolutePath());} else {try {InputStream in = LibLoader.class.getResourceAsStream(resourcePath);FileUtils.copyInputStreamToFile(in,libFile);in.close();System.load(libFile.getAbsolutePath());} catch (Exception e) {e.printStackTrace();throw new RuntimeException("Failed to load required lib", e);}}}
}    

将so文件放在工程的resources目录下

使用

public class DemoJniClient{public native int helloWorld(String arg);static {LibLoader.loadLib("demo.so");}
}

springboot动态加载native类库相关推荐

  1. C#中动态加载卸载类库

    网上现有很多的文章是介绍怎样开发插件化的框架的,大部分无非是用Assembly.load等方法,动态加载类库,但这种方法有个缺点,就是没有办法卸载,因为net中就没有提供卸载assembly的方法,还 ...

  2. netcore实践:跨平台动态加载native组件

    缘起netcore框架下实现基于zmq的应用.在.net framework时代,我们进行zmq开发由很多的选择,比较常用的有clrzmq4和NetMQ. 其中clrzmq是基于libzmq的Inte ...

  3. java动态柱状图_springboot动态加载Echarts柱状图

    本文实例为大家分享了springboot动态加载Echarts柱状图的具体代码,供大家参考,具体内容如下 第一次写博客,废话不多说,直接上代码 后台代码 @RequestMapping("/ ...

  4. android 动态库获取路径问题,一种Android App在Native层动态加载so库的方案

    这篇文章通过实战案例,介绍了一种有条理的组织Native层代码层级结构的方法.并且,在良好的代码层级.作用分工的基础上,实现了动态的按需加载.卸载so库.文章的最后,还介绍了实践过程中遇到的困难以及对 ...

  5. android 动态 dex,Android 动态加载dex

    首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...

  6. Android插件化开发之动态加载基础之ClassLoader工作机制

    类加载器ClassLoader 早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载.这些插件大多是一些Jar包,而使用 ...

  7. 携程Android App插件化和动态加载实践

    转载自:http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading?email=947091870@qq.com 编者按:本文为携程无 ...

  8. Unity动态加载和内存管理(三合一)

    原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Re ...

  9. Java中动态加载字节码的方法 (持续补充)

    文章目录 Java中动态加载字节码的方法 1.利用 URLClassLoader 加载远程class文件 2.利用 ClassLoader#defineClass 直接加载字节码 2.1 类加载 - ...

最新文章

  1. 递归实现显示目标文件夹的所有文件和文件夹,并计算目标文件夹的大小
  2. Roman to Integer LeetCode Java
  3. linux pmap命令,Linux pmap 命令用法详解-Linux命令大全(手册)
  4. 机器人学一些概念2——四元数,D-H 参数
  5. ‘仿微信发表朋友圈’项目中登录功能的业务逻辑
  6. IO静态映射和动态映射
  7. Spring JDBC模板惯用方式
  8. hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
  9. 3.2配置自定义的路径映射
  10. springboot+mybatis+redis实现分布式缓存
  11. 数据库备份与还原的过程中介质集有2个介质簇,但只提供了1个。必须提供所有成员...
  12. jre7或jre8或其他版本共存问题
  13. oracle双机热备 rose,linux下使用RoseHa实现oracle双机热备.doc
  14. wps画 ui 原型图
  15. 红鸟网络:棋牌游戏开发运营,细分领域是关键
  16. 带你深入剖析TCP/IP协议、TCP协议和UDP协议、IP协议
  17. 邮件客户端 gmail hotmail
  18. 3种思路,打造用户画像的标签体系
  19. CSS实现登录表单毛玻璃效果
  20. AttributeError: module ‘*****‘ has no attribute ‘###‘解决办法看过来~

热门文章

  1. 【高清】鲁邦三世主题曲 - ルパン三世のテーマ'80 南澤大介 改编+演奏
  2. css圆角box(网上流行用b标签)
  3. Session对象的集合
  4. 小东《迷路的情人》MV
  5. 阿里面试题——Java对象初始化
  6. ORACLE wallet实现无需输入用户名与密码登陆数据库
  7. SSI 社会信号识别 —— 实时分析和识别人类行为
  8. zabbix nginx error log监控
  9. django之创建第6-1个项目-自定义过滤器
  10. golang的mahonia字符集转换工具用法