代码之家  ›  专栏  ›  技术社区  ›  Martin Wiboe

如何使用Eclipse在.jar文件中包含特定于平台的本机库?

  •  6
  • Martin Wiboe  · 技术社区  · 15 年前

    我刚刚开始学习JNI。我一直遵循一个简单的例子,我创建了一个Java应用程序,它在本地库中调用hello World方法。我想以win32和linux x86为目标。

    我的库驻留在一个dll中,当将该dll添加到Eclipse项目的根目录中时,我可以使用loadLibrary来调用它。
    但是,我不知道如何让Eclipse导出一个可运行的JAR,该JAR包含用于Linux的dll和.so文件。

    所以我的问题基本上是:您将如何在Eclipse中创建一个项目,并包含同一个本机库的几个版本?

    谢谢您,
    马丁

    2 回复  |  直到 13 年前
        1
  •  4
  •   Chris Dennett    15 年前

    对于可运行JAR,您需要做的是提取到临时目录(可能在静态块中),然后从该目录加载DLL(使用同一块中的System.LoadLibrary())。要做到这一点,您需要子类化ClassLoader并重写findlibrary()方法,以允许在该目录中找到库。您可以在这里做任何需要的逻辑来加载特定的平台库。老实说,不同平台上的库的命名应该是相似的——我相信在加载时省略了“lib”部分,以及扩展。这就是重点。可能更容易使用一个罐子作为另一个海报提到:)

        2
  •  3
  •   Bogdan    15 年前

    你可能想看看 One-JAR 项目。它允许您将应用程序及其依赖项(包括本机库)打包到单个JAR文件中。