0

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

编辑 :

这是我的错误输出:在此处输入图像描述

这是我的类路径:

<?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 文件夹中。

4

1 回答 1

3

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

  1. 类路径。这包括您的类,以及您正在使用的任何库的 jar。
  2. 本机库路径。这包括用于本机代码的资源。

看起来您正确设置了第一个,但没有正确设置第二个。

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

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

Google 是您的朋友,要了解更多信息,请尝试搜索“java 本机库”、“java.library.path”或“onejar 本机库”。

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

如何在 JAR 中捆绑原生库和 JNI 库?

什么是 LD_LIBRARY_PATH 以及如何使用它?

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

于 2015-08-04T13:36:06.430 回答