关闭

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

标签: jnidlljavapathclasswindows
871人阅读 评论(0) 收藏 举报
分类:

刚到新公司,就接到一个棘手的任务。想了很多办法,最后想使用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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:93883次
    • 积分:1165
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:78篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论