标签: java java-native-interface native
我想知道java.*库如何实现java native interface?
java.*
java native interface
更具体地说,我正在调查java.awt.Robot并遇到本机方法调用。就像我在Windows中一样 - 这是否意味着.cpp文件放在某处(java.awt.*包内?) - java.awt.Robot使用?
java.awt.Robot
.cpp
java.awt.*
答案 0 :(得分:0)
无论何时调用本机代码,都必须通过JNI。通常,您需要构建共享库。调用模式如下(请注意,您不会调用C文件 - 它只是可视化将调用哪个方法):
因此,从某种意义上说,有一个文件包含您调用的库的源代码。
对于Windows,共享库是DLL个文件,如果是Linux,它们通常是so个文件,而在macOS dylib中。如果您想让它们对您的Java代码“可见”,那么您在这里几乎没有选择。您可以将位置(库所在的目录)放在:
DLL
so
dylib
PATH
LD_LIBRARY_PATH
-Djava.library.path