System.loadLibrary()中使用了哪些类型的库

时间:2018-03-21 16:59:19

标签: java

最近,我一直在浏览图书馆的源代码,并找到了这段代码:

if (osName.startsWith("Win")){
      if (arch.equals("x86")){
        System.loadLibrary("LIBWINPTHREAD-1");
        System.loadLibrary("LIBSNDFILE-1");
        System.loadLibrary("LIBGCC_S_SJLJ-1");
        System.loadLibrary("LIBMPG123-0");
        System.loadLibrary("LIBMETHCLA");
        System.loadLibrary("LIBMETHCLAINTERFACE"); 
      }
      else {
        System.loadLibrary("LIBWINPTHREAD-1");
        System.loadLibrary("LIBSNDFILE-1");
        System.loadLibrary("LIBMPG123-0");
        System.loadLibrary("LIBMETHCLA");
        System.loadLibrary("LIBMETHCLAINTERFACE");  
      }
    }  

我想知道这段代码加载了哪种类型的库,以及为什么需要这些代码。 代码取自: https://github.com/processing/processing-sound/blob/master/src/processing/sound/MethClaInterface.java

1 个答案:

答案 0 :(得分:1)

在这里使用本机代码,意味着代码不是Java而且不需要JVM,用C,C ++等语言编写(但是还有其他语言可以编译为本机代码)。它是JNI(Java Native Interface)的一部分,它允许在Java应用程序中使用本机代码。

有一个名为Panama的项目,使本机库的使用比现有的JNI更简单,现有的JNI非常复杂,可能会出现在Java的未来版本中。