springboot动态加载native类库
有些时候需要使用到本地类库来实现一些功能,比如在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类库相关推荐
- C#中动态加载卸载类库
网上现有很多的文章是介绍怎样开发插件化的框架的,大部分无非是用Assembly.load等方法,动态加载类库,但这种方法有个缺点,就是没有办法卸载,因为net中就没有提供卸载assembly的方法,还 ...
- netcore实践:跨平台动态加载native组件
缘起netcore框架下实现基于zmq的应用.在.net framework时代,我们进行zmq开发由很多的选择,比较常用的有clrzmq4和NetMQ. 其中clrzmq是基于libzmq的Inte ...
- java动态柱状图_springboot动态加载Echarts柱状图
本文实例为大家分享了springboot动态加载Echarts柱状图的具体代码,供大家参考,具体内容如下 第一次写博客,废话不多说,直接上代码 后台代码 @RequestMapping("/ ...
- android 动态库获取路径问题,一种Android App在Native层动态加载so库的方案
这篇文章通过实战案例,介绍了一种有条理的组织Native层代码层级结构的方法.并且,在良好的代码层级.作用分工的基础上,实现了动态的按需加载.卸载so库.文章的最后,还介绍了实践过程中遇到的困难以及对 ...
- android 动态 dex,Android 动态加载dex
首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...
- Android插件化开发之动态加载基础之ClassLoader工作机制
类加载器ClassLoader 早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载.这些插件大多是一些Jar包,而使用 ...
- 携程Android App插件化和动态加载实践
转载自:http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading?email=947091870@qq.com 编者按:本文为携程无 ...
- Unity动态加载和内存管理(三合一)
原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Re ...
- Java中动态加载字节码的方法 (持续补充)
文章目录 Java中动态加载字节码的方法 1.利用 URLClassLoader 加载远程class文件 2.利用 ClassLoader#defineClass 直接加载字节码 2.1 类加载 - ...
最新文章
- 递归实现显示目标文件夹的所有文件和文件夹,并计算目标文件夹的大小
- Roman to Integer LeetCode Java
- linux pmap命令,Linux pmap 命令用法详解-Linux命令大全(手册)
- 机器人学一些概念2——四元数,D-H 参数
- ‘仿微信发表朋友圈’项目中登录功能的业务逻辑
- IO静态映射和动态映射
- Spring JDBC模板惯用方式
- hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
- 3.2配置自定义的路径映射
- springboot+mybatis+redis实现分布式缓存
- 数据库备份与还原的过程中介质集有2个介质簇,但只提供了1个。必须提供所有成员...
- jre7或jre8或其他版本共存问题
- oracle双机热备 rose,linux下使用RoseHa实现oracle双机热备.doc
- wps画 ui 原型图
- 红鸟网络:棋牌游戏开发运营,细分领域是关键
- 带你深入剖析TCP/IP协议、TCP协议和UDP协议、IP协议
- 邮件客户端 gmail hotmail
- 3种思路,打造用户画像的标签体系
- CSS实现登录表单毛玻璃效果
- AttributeError: module ‘*****‘ has no attribute ‘###‘解决办法看过来~