java。*库如何实现Java本机接口以使用本机方法及其功能?

时间:2017-10-01 18:05:34

标签: java java-native-interface native

我想知道java.*库如何实现java native interface

更具体地说,我正在调查java.awt.Robot并遇到本机方法调用。就像我在Windows中一样 - 这是否意味着.cpp文件放在某处(java.awt.*包内?) - java.awt.Robot使用?

1 个答案:

答案 0 :(得分:0)

无论何时调用本机代码,都必须通过JNI。通常,您需要构建共享库。调用模式如下(请注意,您不会调用C文件 - 它只是可视化将调用哪个方法):

enter image description here

因此,从某种意义上说,有一个文件包含您调用的库的源代码。

对于Windows,共享库是DLL个文件,如果是Linux,它们通常是so个文件,而在macOS dylib中。如果您想让它们对您的Java代码“可见”,那么您在这里几乎没有选择。您可以将位置(库所在的目录)放在:

  • PATH(windows)
  • LD_LIBRARY_PATH(macOS / Linux)
  • -Djava.library.path - 适用于所有系统,这只是一个jvm的论点。