如何把java类和JNI调用的DLL打包成jar?
我的java类是Search.java ,包名为mysearch ,其中通过JNI调用了一个DLL,类和DLL文件都放在pack文件夹下。
编译后的目录结构为e:/pack/mysearch/Search.class
在pack文件夹下面建立一个MANIFEST.MF文件
内容如下:
Main-Class: mysearch.Search 然后回车
在e:\pack下运行
jar cvfm search.jar MANIFEST.MF pack
然后在e:\pack下运行
java -jar search.jar
可以执行,将search.jar拷到其它目录下运行时,说找不到DLL文件,可是我打包的时候已经将DLL打在包里了啊,请高手赐教。
------解决方案--------------------mark
------解决方案--------------------把dll文件放到e:\pack目录下,再把e:\pack加到classpth里就可以了
------解决方案--------------------晕,dll怎么可以打到jar包中?
------解决方案--------------------dll可包不进去
------解决方案--------------------沒碰過此類問題,幫樓主頂上去,順便學習
------解决方案--------------------不能把DLL打到包中吧。
打到包里容器或jdk就找不到它了。
------解决方案--------------------不是不行,是你没做好,我这样做过N多次了
------解决方案--------------------我觉得java查找dll不是从classpath上查找的, 而是从系统的搜索路径上找,搜索路径是进程的工作目录, 当前目录, system32, windows和path指向的目录, 所有, 你的程序运行后应该把dll放到这些目录中的一个就可以找到, 根据是java doc说,
* Loads a code file with the specified filename from the local file
* system as a dynamic library. The filename
* argument must be a complete path name.
* Loads the system library specified by the <code> libname </code>
* argument. The manner in which a library name is mapped to the
* actual system library is system dependent.
但是, 我没有试验
------解决方案--------------------我也碰到这个问题,帮你顶下
------解决方案--------------------我也碰到了
帮你顶一下