Java Native Interface加载dll文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Native Interface加载dll文件相关的知识,希望对你有一定的参考价值。

我想在java程序中加载DLL文件。我没有收到错误。但是,未加载DLL库。这是代码片段:

final class TJLoader {
  static void load() {
    //System.loadLibrary("@TURBOJPEG_DLL_NAME@");
      String path = "C:/Eclipse2/mozpeg-master/bin";
      try {
            System.out.println("before loading");
            //System.loadLibrary("cygjpeg-62");
            System.load("C:/image_test/mozjpeg-master/.libs/cygjpeg-62.dll");

            System.out.println("2");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        System.out.println("exception="+e);
    }catch(Error e){
        System.out.println("error="+e.getMessage());
    }
  }
}

在控制台上,我将“加载前”。但是,之后没有任何内容打印出来,程序突然结束。请注意DLL是一个62位的库,我使用62位JVM

答案

DLL加载失败实际上会产生java错误。尝试调用本机方法时会产生本机错误。当程序无法加载DLL时,我收到了像“找不到库”这样的java错误。您应确保您的DLL是64位版本,并尝试避免使用Cygwin。我使用Visual Studio来构建DLL,它工作正常。还要记住采用发行版而不是调试版。

以上是关于Java Native Interface加载dll文件的主要内容,如果未能解决你的问题,请参考以下文章

Java固有接口JNI(Java Native Interface)之HelloWorld

Java Programming Tutorial Java Native Interface (JNI)

Mac下Java JNI (java native interface)调C

Java Native Interface(JNI)从零开始详细教程

java native interface JNI 调用Java方法

Java Native Interface 偷偷摸摸的分叉行为