当前位置: 代码迷 >> Java面试 >> 怎么把java类和JNI调用的DLL打包成jar
  详细解决方案

怎么把java类和JNI调用的DLL打包成jar

热度:102   发布时间:2016-04-17 20:12:03.0
如何把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.

但是, 我没有试验

------解决方案--------------------
我也碰到这个问题,帮你顶下
------解决方案--------------------
我也碰到了
帮你顶一下
  相关解决方案