如何使用jar分发本机库?

时间:2013-03-30 18:46:52

标签: java dll jar extract webcam

enter image description here

这是我最终部署软件时想要创建的目录结构。它是一个具有网络摄像头功能的Java聊天客户端,对于我正在使用LTI-CIVIL的网络摄像头。

我被告知我不能直接使用JAR中的DLL,我将不得不在某处提取它们。一切都很酷。但是,我无法理解的是我怎样才能让它发挥作用

LTI在他们的网站上提供了大量zip文件。如果您使用的是Eclipse,则需要为本机库设置相应文件夹的路径。但是,这限制了我使用Eclipse并阻止我将JAR分发给我的朋友。显然,我现在必须指向该文件夹,并且可能加载文件,programatiaclly

我是初学者,所以如果有人可以download LTI-CIVIL,请查看目录结构并让我知道如何实现我想要做的事情,那将非常感激。 AFAIK,对于我的32位Windows,我需要指向native/win32-x86文件夹。

我要做的是在内存中加载适当的文件,以便我可以提供网络摄像头设施。我想避免安装程序,只需提供一个带有上述目录结构的zip文件,以便人们可以从文件夹中提取,运行jar文件并开始聊天。

澄清:我正在尝试使用 jar文件发送库,而不是 jar中的。我知道从jar中提取和使用dll很难

1 个答案:

答案 0 :(得分:3)

我假设它不是你自己的代码加载本机库(System.load),它们是由第三方jar(lti-civil)加载的。

在这种情况下,您必须在lti-civil尝试加载本机库之前适当地设置环境变量LD_LIBRARY_PATH

或者:

由于您事先并不知道确切的路径,因此在这两种情况下,您还必须找到本机库所在的正确路径。

如果库的路径是相对于jar / launcher的路径,那么找到可执行文件的当前路径:

然后,您可以假设库位于相对于此(.../native)的路径中,只计算路径(并可能将其扩展为绝对路径)。

计算完绝对路径后,按答案第一部分所述设置环境/系统属性。