正如主题所说,Java 中是否有一种方法可以获取在任何给定时间加载的所有 JNI 本机库的列表?
原文由 benhsu 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如主题所说,Java 中是否有一种方法可以获取在任何给定时间加载的所有 JNI 本机库的列表?
原文由 benhsu 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答705 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
[ 免责声明:请注意,此解决方案始终是 hackish。而且在大多数情况下,现在已经行不通了。检查 本杰明的答案 以获取更多信息]
如果您愿意的话,有一种方法可以确定所有当前加载的本机库。无法确定已卸载的库。
基于 Svetlin Nakov 的工作( 将 JVM 中加载的类提取到单个 JAR ),我做了一个 POC,它为您提供了从应用程序类加载器和当前类的类加载器加载的本机库的名称。
首先是没有bu的简化版本….它异常处理,漂亮的错误消息,javadoc,….
通过反射获取类加载器存放已加载库的私有字段
像这样调用上面的
voilá
libraries
包含加载的本机库的名称。在 此处 和 此处 获取完整的源代码