Jni开发时,dll文件放置的路径处理方式

转载 2007年09月11日 17:38:00

刚到新公司,就接到一个棘手的任务。想了很多办法,最后想使用Java COM桥来解决。JACOB是一个较成熟的开源项目,可以很方便的调用COM组件。搞过JNI的都知道,本地库要放到系统path中,这样,Java进程在运行中才能找到本地库并动态加载。我们可以通过环境变量System.getProperty("java.library.path")来查看当前JVM搜索本地库的路径。

这时,就会遇到一个问题,部署应用的时候要记住将本地库拷贝到环境变量path指定的路径中。一般在windows平台上直接copy到C:/WINDOWS/System32目录下了事。但要换一台机器部署怎么办?除了要把Java程序拿过去,还要记的把本地库也copy到正确的目录,真麻烦。于是想看看有什么好办法来解决这个问题。

首先,最容易想到的是,把本地库和class文件放在一起,利用Class.getResource(str)找到路径,然后加到环境java.library.path中:

代码
  1. URL url = Foo.class.getResource("Foo.class");   
  2. String path = (new File(url.getPath())).getParent();   
  3. System.setProperty("java.library.path", path);  


唯一的美中不足,在系统关闭的时候删除dll总是不能成功,试了两种办法都不行。想想也对,dll正被程序使用,当然不能删除。翻了一下API,Java好像没用提供unload本地库的功能,只好做罢。
解决了这么个小问题,罗罗嗦嗦一大篇,罪过罪过。后来这个项目又没有使用jacob,真对不起各位观众。 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1772149

Jni开发时,dll文件放置的路径处理方式

刚到新公司,就接到一个棘手的任务。想了很多办法,最后想使用Java COM桥来解决。JACOB是一个较成熟的开源项目,可以很方便的调用COM组件。搞过JNI的都知道,本地库要放到系统path中,这样,...
  • thunder4393
  • thunder4393
  • 2007年09月04日 18:48
  • 6416

Jni开发时,dll文件放置的路径处理方式

刚到新公司,就接到一个棘手的任务。想了很多办法,最后想使用Java COM桥来解决。JACOB是一个较成熟的开源项目,可以很方便的调用COM组件。搞过JNI的都知道,本地库要放到系统path中,这样,...
  • songbaojie
  • songbaojie
  • 2007年10月25日 09:04
  • 454

Java工作笔记:部署Tomcat时使用jni和jna调用DLL文件的问题

部署Tomcat时使用jni和jna调用DLL文件的问题 我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLL C++库,最后经过测试验证结果选择采用JNA方法来调DLL库。之...
  • zjutzmh
  • zjutzmh
  • 2016年07月29日 23:10
  • 3860

JNI java调用动态链接库dll

#include #include JNIEXPORT void JNICALL JAVA_ConDll_open(JNIEnv *env,jobject obj);          生成的头文件...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2015年05月28日 22:19
  • 8227

java调用动态库时,.dll文件路径问题

网上说”.dll”应该放在”.class”同级目录下,但经测试,程序报错: “java.lang.UnsatisfiedLinkError: no JniDllDemo in java.librar...
  • u012176176
  • u012176176
  • 2016年05月09日 09:54
  • 3308

Jni从dll或so文件中获取信息

本文介绍java使用jni调用c、c++编写生成的dll文件或so文件中的接口方法实现过程。 1.      编写java含有本地方法的测试类。 package com.gh; public cla...
  • heshi111
  • heshi111
  • 2016年12月10日 09:10
  • 232

使用JNI调用dll(C++)

使用JNI调用dll(C++)使用JNI调用dllC dll文件的位置 关于32位 OR 64位的dll 内存泄漏   简单说下业务背景,有一个用C++写的加密算法(据说速度快),需要用JAVA来调用...
  • u014240933
  • u014240933
  • 2015年05月15日 13:50
  • 762

Java通过JNI 调用动态链接库DLL

JNI(Java Native Interface)Java本地接口,主要作用是实现java代码与C、C++编写的代码交互。在Android编程中,so库的访问也用到了jni技术。理论多说无益,还是看...
  • qq_27070443
  • qq_27070443
  • 2017年02月03日 17:26
  • 299

JNI调用时so链接库文件的路径设置

最近在做JNI程序时,用到了相当于windows环境下的dll--动态链接库的so库,即linux环境下,程序执行时所需要函数链接库。 一般来说的so库路径寻找包括编译时和运行时,因为前边提到的是J...
  • erliang20088
  • erliang20088
  • 2015年05月17日 16:52
  • 2220

使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能

JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编...
  • cszhmrz
  • cszhmrz
  • 2014年02月24日 12:49
  • 1772
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jni开发时,dll文件放置的路径处理方式
举报原因:
原因补充:

(最多只允许输入30个字)