星期日, 十月 30, 2005

One-Jar Open source

最近因为弄JNI,必须解决一个技术问题,就是自动加载

包含在可执行Jar中的动态库(.dll或.so).

这个问题2年前就碰到过类似的问题,不过当时是用编写脚本用 -

Xbootclasspath/a:作为加载第三方不包含在Jar文件中的class的方法。


虽然可以解决问题,很不完美。

后来用System.load来动态加载JNI的动态库,解决了这个问题后。

突然想到这个老问题,继续尝试以前想到的用ClassLoader来解决这个问题。

具体方法是:把包含在jar文件中的第三方jar包,展开到当前目录或系统临时目录

下,通过loadClass来加载这些包。

任务将近完成的时候,觉的这种方法依然要依赖用户的运行环境,如果是个限制

严格的环境,在临时展开这些class的时候,会出现运行时RuntimeException

终于在google发现了一个 one-jar的方法,是直接通过InputStream来加载

class,这是很大的进步了。仔细看看作者的实现。

http://one-jar.sourceforge.net/