2013-03-28 49 views
2

我是新来的任何本地图书馆工作,这个问题可能看起来很愚蠢,所以请忍受我。如何在一个jar文件中打包一个库?

我下载了LTI-CIVIL来捕捉摄像头的视频输入。它要求我在Eclipse中创建一个库并指出本地文件的位置。

假设本机dll位于E:\files\lti-civil\src\native\ms(x86),我想将这些与jar文件一起添加,并创建一个独立的应用程序,我可以发送给我的朋友。

目前,我可以从Eclipse中运行程序本身,因为它指向E:\blah_blah但它可能不会是其他人的计算机上,现在的情况

,我怎么收拾这让我可以做一个独立的应用程序?在Eclipse的src中创建一个文件夹并在那里添加文件夹或什么?

+1

确保您使用相对引用。然后:右键单击项目 - >导出 - > java - > jar文件...在那里你可以选择导出 –

+0

@Heuster好吧,所以添加到src文件夹的东西,并使用相对引用?如果你详细说明,我会接受这个答案:) –

+0

显然,你不能用dll的方式来做这件事,正如Joni所解释的那样。我会接受他的回答:) –

回答

2

DLL无法打包到jar文件中,因为Java无法从Windows上的存档文件加载DLL。一种可能性是分发包括Java程序(作为.jar)和DLL的东西,并且两者都在安装时解压缩。

受欢迎的选择包括:用户必须手动提取的ZIP文件,自解压ZIP文件或由例如InnoSetup生成的“设置”程序。

另一种可能性是将DLL打包到.jar文件中,让应用程序在启动时将其解压缩到临时目录中。

一旦DLL在文件系统上,您可以使用System.loadSystem.loadLibrary加载它。

+0

JAR文件不必被压缩。或者你说Windows无法从任何存档文件读取DLL? – Perception

+0

或者,您可以将DLL/s打包到jar文件中,并让应用程序在运行之前自动提取相应的DLL。 OSGi做到了这一点。 –

+0

是的,@Perception,这就是我的意思。我使用“压缩文件”可能会引起误解,将会进行编辑。 – Joni

4

看看这个question/answer。因为它涵盖了你正在尝试做的事情。

只是为了涵盖答案所要做的就是将.dll包装在.jar中。将该.jar包含在您的项目中。在运行之前,将它们解压缩到临时文件夹并告诉程序使用该位置。

要从Eclipse中创建一个自包含的JAR,请执行以下步骤。

Step 1

右键单击您的项目并选择导出

Step 2

在Java的选择运行的JAR文件

Step 3

选择提取所需的库到生成JAR

这将允许您发送一个单独的应用程序发送给你喜欢的人。

+0

说它找不到模块。 – Fra

相关问题