JAVA动态加载dll任意路径加载dll
2014-06-20 19:15
357 查看
package com.ctl.test; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.StringTokenizer; public class SayHellotoCPP { //LIBFILENAME dll文件的路径 static final String LIBFILENAME = "D:\\inca_workspace\\JNI\\bin\\HelloEnd.dll";// dll 文件 static { try { // 获取到java.library.path 及系统变量中Path中的内容 String libpath = System.getProperty("java.library.path"); if (libpath == null || libpath.length() == 0) { throw new RuntimeException("java.library.path is null"); } //javaBinPath jdk的bin目录D:\Program Files\Java\jdk1.6.0_11\bin String javaBinPath = null; StringTokenizer st = new StringTokenizer(libpath, System.getProperty("path.separator")); if (st.hasMoreElements()) { javaBinPath = st.nextToken(); } else { throw new RuntimeException("can not split library path:" + libpath); } // 把dll文件写入到java.library.path中该dll放在ConvertWord2HM相同目录下,这个可以是你的类名 InputStream inputStream = SayHellotoCPP.class.getResourceAsStream( LIBFILENAME); final File dllFile = new File(LIBFILENAME); if (!dllFile.exists()) { FileOutputStream outputStream = new FileOutputStream(dllFile); byte[] array = new byte[1024]; int bytesRead = -1; while ((bytesRead = inputStream.read(array)) != -1) { outputStream.write(array, 0, bytesRead); } outputStream.flush(); outputStream.close(); } // 动态加载dll System.load(dllFile.getPath()); // 在虚拟机关闭的时候删除dll dllFile.deleteOnExit(); } catch (Throwable e) { throw new RuntimeException("load Convert.dll error!", e); } } public SayHellotoCPP() { } public native void sayHello(String name); public static void main(String[] args) { SayHellotoCPP shp = new SayHellotoCPP(); shp.sayHello("World"); } }
相关文章推荐
- Java动态加载DLL方法
- Java加载dll或so库文件的路径 java.library.path
- Windows用来定位DLL的搜索路径(静态加载和动态加载)
- Java之——Web项目中DLL文件动态加载方法
- java动态加载dll文件
- DLL加载时动态链接路径
- Java之—— JAVA Web项目中DLL/SO文件动态加载方法
- Java之——Web项目中DLL文件动态加载方法
- java.lang.UnsatisfiedLinkError: Can not load XXX library ... JNA不能加载DLL动态库问题
- 加载动态DLL,实现查询进程路径
- Java——动态加载任意目录下的架包
- 动态加载不同路径下的DLL
- 动态决定加载dll多个版本的完美方案
- 动态加载dll,并创建类和实例
- 一个动态加载/卸载DLL的例子
- [转载]动态决定加载dll多个版本的完美方案
- Symbian DLL,Lib(动态加载动态库,静态加载动态库,静态加载静态库)
- 动态加载DLL
- 动态加载dll的导出函数的问题
- C#动态加载DLL