将FatJar用于本机库

时间:2015-08-04 12:25:17

标签: java jar shared-libraries onejar

我正在使用FatJar创建一个带有postgresql.jar,jdatepicker.jar和本机库的jar。我把项目合并到一个罐子里。没有postgresql和jdatepicker jar错误。我可以通过编程方式加载我的本机库。但我无法加载依赖库。当我放置库C:\ Windows \ System32时,没有加载依赖库错误。但我想从jar加载依赖库。我解压了我的胖子,我可以看到依赖的库。但我无法从jar加载。我怎么能这样做?

编辑:

这是我的错误输出:enter image description here

这是我的类路径:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7">
        <attributes>
            <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="JavaWinForms"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="jdatepicker-1.3.4.jar"/>
    <classpathentry kind="lib" path="postgresql-9.4-1201.jdbc41.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

我的本​​机库位于/ project / lib文件夹中。

1 个答案:

答案 0 :(得分:2)

为了过度简化,您可以将Java应用程序的依赖关系视为两个独立的事物:

  1. 类路径。这包括您的课程,以及您正在使用的任何图书馆的罐子。
  2. 本机库路径。这包括用于本机代码的资源。
  3. 看起来你正确设置第一个,但不是第二个。

    如果没有One-JAR,您可以使用java.library.path命令行参数指定本机库路径。尝试在运行jar时指定它。

    如果可行,那么您可以了解One-JAR如何处理本机库。 This看起来是一个很好的起点。

    Google是您的朋友,有关更多信息,请尝试搜索“java native libraries”,“java.library.path”或“onejar native libraries”。

    在这些相关问题上也可以找到更多信息:

    How to bundle a native library and a JNI library inside a JAR?

    What is LD_LIBRARY_PATH and how to use it?

    无耻的自我推销:你也可以使用我创建的名为JarMatey的工具,它与One-JAR非常相似。