1

我们正在尝试用 exe4j 将我们的 jar 文件包装到 exe 文件中。我们的 jar 依赖于存储在 libs 文件夹中的几个 jar 库。我们不想分发 jar 文件,只分发 libs 文件夹中的 exe 和 jar 库。为了执行应用程序,我们使用自己的 JRE。

这是应用程序的文件结构:

/java 
/libs 
application.exe

在项目类型中,我们使用“Jar in exe mode”选项。生成了 exe,但执行失败。在errors.log中我可以看到,java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 如果我将slf4j.jar添加到类路径,生成的exe更大,并且error.log文件中还有另一个NoClassDefFoundError。

如果我尝试“常规模式”并使用外部库指定文件夹 - 应用程序运行良好。但是“Jar in exe mode”无法访问指定文件夹。

有没有办法让 exe 包装 jar 文件,并使用存储在外部 libs 文件夹中的 jar 库,而无需手动指定它们并将它们打包到 exe 中?

4

1 回答 1

0

我们不想分发 jar 文件,只分发 libs 文件夹中的 exe 和 jar 库。

生成的可执行文件中的 JAR 文件不受任何保护,因为在启动可执行文件时它将被提取到 %TEMP% 目录。这就是为什么您可以只使用常规模式并将 JAR 文件放在 lib 目录中的原因。

要保护 JAR 文件,请使用 proguard 之类的混淆器。

于 2020-02-17T16:08:32.013 回答