2013-10-02 35 views
0

我有一个C项目。我将它编译为一个库(.so),并使用JNI将它导入到一个java项目中。一切进行得都很顺利。但是我想将它编译成.jar文件,这样我就可以分发它,用户不必创建实现C函数的Java类(使用JNI)。所以我试图做到这一点,但是当我尝试再次编译时(在一个干净的项目中,包含类和.so的.jar),类(从jar中)再也找不到.so了,符号不被识别。我不希望用户手动链接.so到jar(在Eclipse或其他)。.so .jar(Eclipse)

我对java或eclipse没有太多的经验,所以我很迷茫。

有没有人有答案或什么来帮助我?

+0

你会遇到一个问题,就是你将该应用程序分发给了除linux以外的其他应用程序。顺便说一句,System.loadLibrary不适用于内部的jar库 – RamonBoza

回答

1

大多数操作系统上的动态链接程序不会从压缩归档中加载库;您必须将.so解压缩到一个文件以加载它,例如在临时文件的目录中。

之后,你将不得不使用System.load加载。所以,因为它不会在库搜索路径。

这个麻烦的另一种方法是使用分配JNLP应用程序:网络启动应用程序会下载,安装和运行应用程序,你不担心自己提取任何东西。本地图书馆添加了nativelib元素。 http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html