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

我刚开始学习JNI。 我一直在遵循一个简单的例子,并且创build了一个在本地库中调用Hello World方法的Java应用程序。 我想定位Win32和Linux x86。

我的库驻留在一个DLL中,当DLL被添加到我的Eclipse项目的根目录时,我可以使用LoadLibrary调用它。
然而,我不知道如何让Eclipse导出包含DLL和Linux的.SO文件的可运行JAR。

所以我的问题基本上是; 你将如何去在Eclipse中创build一个项目,并包含相同的本地库的几个版本?

谢谢,
马丁

Solutions Collecting From Web of "如何使用Eclipse在.JAR文件中包含特定于平台的本机库?"

对于可运行的JAR,你需要做的是提取到临时目录(也许在一个静态的{}块),然后从该目录加载DLL(使用System.loadLibrary()在同一个块)。 为此,您需要继承ClassLoader并重写findLibrary()方法以允许在该目录中找到库。 你可以做任何你需要在这里加载特定平台库的逻辑。 说实话,不同平台上的库的命名应该是相似的 – 我相信你在加载和扩展时省略了'lib'部分。 这是它的要点。 可能更容易使用One-JAR作为其他海报提到:)

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