Java .so在.jar中(Eclipse)

Java .so在.jar中(Eclipse),java,eclipse,jar,shared-libraries,Java,Eclipse,Jar,Shared Libraries,我有一个C项目。我将其编译为库(.so),并使用JNI将其导入java项目。一切进展顺利。但是我想把它编译成一个.jar文件,这样我就可以分发它,用户就不必创建实现C函数的Java类(使用JNI)。 所以我试着这样做,但是当我再次尝试编译时(在一个干净的项目中,.jar包含类和.So),类(从jar中)找不到。因此,符号不再被识别。我不希望用户手动将.so链接到jar(在Eclipse或其他任何版本中) 我对java或eclipse没有太多经验,所以我完全迷路了 有人有答案或什么可以帮助我吗?大

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

我对java或eclipse没有太多经验,所以我完全迷路了


有人有答案或什么可以帮助我吗?

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

之后,您必须使用System.load来加载.so,因为它不在库搜索路径中


解决这一麻烦的另一种方法是使用jnlp分发应用程序:WebStart应用程序将下载、设置和运行您的应用程序,您不必担心自己提取任何内容。本地库添加了
nativelib
元素

您将遇到一个问题,即您将该应用程序分发到linux以外的系统。顺便说一句,System.loadLibrary不适用于内部jar库