使用 exe4j 从 .jar 创建 .exe 时如何包含库

How to include libraries when creating .exe from .jar with exe4j

我写了一个 Java FX 工具,它连接到 .accdb 数据库并从中创建了一个运行良好的可执行 JAR 文件。在 JAR 文件的同一个文件夹中,我有几个 JAR 库,我需要这些库才能连接到我的数据库。


现在我想用 exe4j 从可执行 JAR 创建一个可执行文件 (.exe)。为此,在步骤 "Java invocation" 中,在 "Advanced Options" 下,我添加了一个包含这些必需库的文件夹作为 "library directory"。

我现在 运行 生成的 .exe 和我的应用程序打开了,但是当我尝试连接到我的数据库时(通过单击我的应用程序中的按钮)它不起作用并且我得到这个异常:

java.lang.ClassNotFoundException: net.ucanaccess.jdbc.UcanaccessDriver

很明显它没有包含我需要的库。


除了我的实际可执行 JAR 之外,我必须如何在 exe4j 中继续包含多个 JAR 库?

默认情况下,JAR 文件从文件系统添加到 class 路径,其相对位置与向导中指定的相同,因此可执行文件将无法自行运行。

exe4j 有一个 "JAR in EXE" 模式,其中 class 路径中的所有 JAR 文件都打包到可执行文件中。资源文件不能那样打包。如果您需要 JAR 文件以外的资源(如 DLL),则必须使用常规模式并将可执行文件与所有支持文件一起发送。