Jni开发时,dll文件放置的路径处理方式
2007-09-11 17:38
381 查看
刚到新公司,就接到一个棘手的任务。想了很多办法,最后想使用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中:
代码
URL url = Foo.class.getResource("Foo.class");
String path = (new File(url.getPath())).getParent();
System.setProperty("java.library.path", path);
唯一的美中不足,在系统关闭的时候删除dll总是不能成功,试了两种办法都不行。想想也对,dll正被程序使用,当然不能删除。翻了一下API,Java好像没用提供unload本地库的功能,只好做罢。
解决了这么个小问题,罗罗嗦嗦一大篇,罪过罪过。后来这个项目又没有使用jacob,真对不起各位观众。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1772149
这时,就会遇到一个问题,部署应用的时候要记住将本地库拷贝到环境变量path指定的路径中。一般在windows平台上直接copy到C:/WINDOWS/System32目录下了事。但要换一台机器部署怎么办?除了要把Java程序拿过去,还要记的把本地库也copy到正确的目录,真麻烦。于是想看看有什么好办法来解决这个问题。
首先,最容易想到的是,把本地库和class文件放在一起,利用Class.getResource(str)找到路径,然后加到环境java.library.path中:
代码
URL url = Foo.class.getResource("Foo.class");
String path = (new File(url.getPath())).getParent();
System.setProperty("java.library.path", path);
唯一的美中不足,在系统关闭的时候删除dll总是不能成功,试了两种办法都不行。想想也对,dll正被程序使用,当然不能删除。翻了一下API,Java好像没用提供unload本地库的功能,只好做罢。
解决了这么个小问题,罗罗嗦嗦一大篇,罪过罪过。后来这个项目又没有使用jacob,真对不起各位观众。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1772149
相关文章推荐
- Jni开发时,dll文件放置的路径处理方式
- Jni开发时,dll文件放置的路径处理方式
- Jni开发时,dll文件放置的路径处理方式
- Jni开发时,dll文件放置的路径处理方式
- [Android开发] Android Handler的处理方式
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- (转)【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式
- Eclipse rap 富客户端开发总结(10) -Rap不同系统间的差异和处理方式
- iOS开发emoji处理方式大起底
- PHP的错误处理方式(开发和上线)
- Android studio JNI开发的三种方式
- [JNI]开发之旅(9)JNI函数字符串处理
- PHP的错误处理方式(开发和上线)
- AngularJS开发WebApp的自适应处理方式
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- eclipse android开发环境 bug CDT包含路径名无法修改(JNI开发使用)
- Android JNI开发摘录(五)之对象引用处理
- ajax同步开发——json+对应的处理方式直接贴上被我滥用的代码标本吧: