在最近的一个问题中,我收到了评论,问我是否在我的应用程序中使用了“本地代码”。现在,我知道有一种方法可以使用称为“JNI”的东西从Java应用程序内部调用传统二进制库(DLL、SO)中的代码。我已经阅读了维基百科的条目,但我从未使用过这个。
我正在使用许多库,其中一些可能使用本地代码,也可能不使用。我没有安装任何SO(在Linux上运行),但我想这并不意味着这些库没有使用任何SO?我必须浏览所有文档(这些文档在库之间的质量差异很大)还是可以对JAR进行一些分析来找出它们是否使用了本地代码?
我正在使用许多库,其中一些可能使用本地代码,也可能不使用。我没有安装任何SO(在Linux上运行),但我想这并不意味着这些库没有使用任何SO?我必须浏览所有文档(这些文档在库之间的质量差异很大)还是可以对JAR进行一些分析来找出它们是否使用了本地代码?
cat /proc/processId/maps | grep ".so"
。在Windows上,Process Explorer可以显示已加载的DLL。最后,您可以安装SecurityManager(在Java中)来跟踪任何被加载的库,该方法称为checkLink
,权限名称以“loadLibrary”开头。 - bestsss