有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在导出到jar时包含opencv本机库

我正在准备jar,它会比较图像并相应地返回结果。 我正在使用OpenCV进行比较。当我导出jar并提供给我的同事在安卓应用程序中使用它时,他在下面的一行中遇到了错误

System.loadLibrary(CORE.NATIVE_LIBRARY_NAME);

检查时,我发现该库正在从我的系统上的本地路径被使用。我如何在罐子中传递下面的库,以便每一次都可以使用它

而且,我也不确定,即使在那时,作为一个系统,它是否会起作用。loadLibrary尝试使用系统中的JAVA路径。 有没有其他方法可以从类路径加载这个库

欢迎提出建议


共 (1) 个答案

  1. # 1 楼答案

    本机库依赖于JVM之外的库,不能以可移植的方式添加到Java应用程序中。这就是说:您仍然可以通过简单地打开jar文件(它是一个zip文件)将文件添加到jar中,并通过路径(例如:/yourlibs/bla.lib)引用文件

    然后,从jar加载将是:

       NativeUtils.loadLibraryFromJar("/yourlibs/bla.lib");
    

    您可能会错过很多依赖项,通过阅读文档、扫描代码和测试代码,您可能会手动获得所有这些依赖项,然后它可能仍然局限于某些操作系统安装