关于jda调用dll的路径问题和测试样例


本文主要几点内容如下:


    1.jda具体的放置路径


    2.jdk切换


    3.测试代码



    此文就是便于自己以后回顾使用,所以就不罗嗦jda和jdi直接的区别了。


    我在使用jda的时候,也是按照网上的教程做测试,但是不管怎么放置我的dll都是不能加载此模块的问题。(有些教程感觉很坑)费了好大的功夫最后查到存在以下的问题:



    1.看看自己使用的jdk和dll是32位的还是64位的。这个一定要对照好。然后只要将自己的dll放置在项目的根目录下即可。



    2.dll的问题,因为dll是别人编写的。起先我也没在意这个。后来最测试我自己生成的Demo是用codeblocks生成的。并且将

java jna调用lib dll jna调用dll路径问题_动态库

修改成

java jna调用lib dll jna调用dll路径问题_jda 路径问题_02

就可以。


        但是codeblocks生成64位的dll我还没弄明白(不知道怎么调配置)。所以我的测试代码是32位的dll。


        单用64位的就不会再报找不到指定模块的错误,只会报找不到指定函数的错误。如果谁知道codeblocks生成64位dll的配置,请告诉我下)



    3.再个问题就是本机安装多个jdk互相切换的问题


        其实,一台机子上可以按照多个不同版本的jdk,64位的当然可以按照32位的,但是反过来肯定不行的。


        这样就牵涉到一个切换jdk的问题。我用的是myeclipse,在这个ide是这样切换的,如下:

java jna调用lib dll jna调用dll路径问题_jda 路径问题_03


        你只要配置了这个环境变量,就不用像配置cmd窗口那样配置了。IDE可以自动识别这个路径的。    



    4.我将所有我搜集的资源都上传到我的csdn上,有测试代码,有jda.jar文件。(收取2分的下载分,嘿嘿);



    ps:jda的压缩文件下有两个jar包,另一个是platform-3.5.1.jar这个包让你报错的时候不显示乱码。

        我的资源有mht格式的,建议用firefox打开,但是前提要按照mht插件:如图

java jna调用lib dll jna调用dll路径问题_jda 路径问题_04

javaweb下dll的放置路径:

追加一个其他人的链接:http://blog.sina.com.cn/s/blog_9075354e0101kq5f.html

---------------------------------------------------------------------------------------补充linux下的调用方法------------------------------------------------------------------

window上的测试通过了,但是当将项目移到linux下问题就又出现了。

问题:

1.在linux下作的demo是从自己写的main函数启动的没什么问题。(注意jdk的位数)

2..可是当我整个项目发布的时候JNA相关代码就不起作用了。安装网上放在各个目录都不行,例如:/usr/lib   /lib 等等都不行。   System.out.println(System.getProperty("java.library.path"));中的目录试了也不行。


方案:

1.linux下的动态库编译我就不多说了。最关键的问题在于so文件的放置路径。

2.最终发现自己的用的jdk是64位的,所以我将我的so文件放在了/usr/lib64/下就可以了。

3.另一种方法就是在加载动态库的时候,写绝对路径。

4.至于修改/etc/profile 中的配置。亲测不用修改也行。


PS:将自己的心得记录在一方面供自己以后查看,一方面希望也能帮助遇到相同问题的朋友。linux的测试样例就不上传了。