Mar*_*boe 6 java linux windows java-native-interface cross-platform
我刚刚开始学习JNI.我一直在关注一个简单的例子,我创建了一个Java应用程序,它在本机库中调用Hello World方法.我想针对Win32和Linux x86.
我的库驻留在DLL中,当DLL被添加到Eclipse项目的根目录时,我可以使用LoadLibrary调用它.
但是,我无法弄清楚如何让Eclipse导出包含DLL和Linux的.SO文件的可运行JAR.
所以我的问题基本上是; 您将如何在Eclipse中创建项目并包含同一本机库的多个版本?
谢谢你,
马丁
对于可运行的 JAR,您需要做的是提取到临时目录(可能在 static { } 块中),然后从该目录加载 DLL(在同一块中使用 System.loadLibrary() )。为此,您需要子类化 ClassLoader 并重写 findLibrary() 方法以允许在该目录中找到库。您可以在此处执行所需的任何逻辑来加载特定的平台库。老实说,不同平台上的库的命名应该是相似的——我相信你在加载时省略了“lib”部分和扩展名。这就是它的要点。正如另一张海报提到的那样,使用 One-JAR 可能更容易:)