zoukankan      html  css  js  c++  java
  • java jna 报错:Unable to load library

      这个错误是真的有时候让人头疼,为了让有同样问题的同学少走弯路,以此分享我处理这个报错的经验。

      这个错误很明显是无法加载到指定的动态链接库,但是为什么无法加载确没有具体显示出来,是路径不对呢,还是dll的平台与当前jvm的平台不匹配没有在错误信息中显示出来。所以需要一步一步排除找原因。

      1)首先你要明确知道这个dll动态链接库是32位的还是64位的编译的,与之对应的就是你的java版本也是要对应的32位或者64位的。

      2)确认了第一点那么基本的环境就没问题了,然后是填写路径,一般路径可以是填相对路径还是绝对路径,为了避免可能出现未知错误,强烈建议还是填写绝对路径,绝对路径要是反斜杠"",为了避免出错可以直接在IDE工具里面找到对应的dll文件右键copy path,如下图2.1

               图2.1

    粘贴到加载dll路径的方法里作为参数,效果如下图2.2

               图2.2

     坚持一个原则能复制粘贴就不要自己手动输入!

      3)前面两步如果可以保证正确的话,那么基本上是可以加载成功的,如果还是失败那请再回去验证前面的步骤,如验证j程序运行是不是在你预期的jvm之上

    点击运行程序看看当前运行的jdk版本是哪一个,如下图3.1

                  图3.1 

    接下来就是cmd,运行java  -version,看下图3.2所示的jdk版本是32位,还是64位。jdk版本一致,且是64位,那么与我的dll是相同的平台,

                   图3.2

     那么可以验证下dll是不是64位或者32位就好了,验证方法自行百度或者参照这位博主的https://www.cnblogs.com/Czhenyu/p/6439383.html

    最后就是路径问题了,如果你是按照我的操作来的那么路径就不会有问题,应该是正常运行的。

      4)到这一步,你的程序还是无法加载dll文件的话,我只能提供思路就是,你的dll是否还引用了其它的dll文件,其它的dll文件的平台与当前不一致。或者找你得到dll来源,确认这个dll是否可以用,dll文件时可以用visual studio 2017或其它把版本工具用C#代码直接引用调用的,当然你也可以用哪个工具打包一个dll。

     最后总结一下:1.平台要一致,平台要一致,平台要一致,重要的事情说三遍。

           2.路径问题,最好是绝对路径。

  • 相关阅读:
    vue 中简单路由的实现
    Vue中对生命周期的理解
    内存泄漏
    前端工程化
    exports 和 module.exports 的区别
    Nodejs的url模块方法
    MongoDB 的获取和安装
    Anjular JS 的一些运用
    移动端vconsole调试
    安装fiddler时,电脑浏览器没网
  • 原文地址:https://www.cnblogs.com/max1995/p/12876095.html
Copyright © 2011-2022 走看看