0

我正在使用 javafx-maven-plugin 将我的应用程序打包成 exe。x64 版本运行良好。但是后来我在 32 位 Windows 7 上(如果这很重要,在 VirtualBox 中运行)上使用 32 位 JDK 1.8.0_161 和 32 位 Maven 打包 x86 版本。生成的应用程序安装,但无法运行,声称 MSVCR100.dll 丢失,即使它位于 runtime\bin 文件夹中。我四处搜索,发现这是一个 JDK 错误,据说早在 u40 中就已修复。那么为什么还会发生这种情况呢?如果我在 .exe 旁边手动复制该 dll,它会在一台机器上启动(再次在 VirtualBox 中),但由于某种原因在另一台机器上静默崩溃(这次是真正的,全新安装)。找到一个相同的javafx-gradle-plugin 问题中的问题,虽然它在构建最新的 Win10 版本时得到了解决,而我正在构建最新的 Win7。

如果我只是安装 Microsoft Visual C++ 2010 Redistributable Package,那么显然一切正常,但我不希望用户必须这样做。那么如何使用 Inno Setup 脚本复制 .dll 以及如何找出静默崩溃背后的原因?

4

2 回答 2

0

可能存在 MSVCR100.dll 所依赖的另一个 .dll,但特定计算机上不存在该 .dll。

这就是 Redistributable Package 将所有内容安装在一起的原因。

尝试使用http://dependencywalker.com/查找另一个依赖项,看起来您需要比 MSVCR100.dll 更多的 dll。

或者简单地在每台机器上安装 Redistributable Package。多次安装它不会损害任何应用程序或系统。

于 2018-02-09T06:35:18.413 回答
0

我认为这与 Windows 是 32 位无关,它恰好与您的两台测试计算机相吻合。我在这里发布了一个相关的问题:找不到库:jvm.dll。这里发生了什么?

您遇到的可能是 java(fx)packager 上的错误,如下所述:https ://bugs.openjdk.java.net/browse/JDK-8191176 。该错误报告声称该错误从 8u155 开始并由 8u171 解决,但我一直在经历该错误,直到最新的 8u172 b03,正如我在这里描述的那样:https ://github.com/javafxports/openjdk-jfx/issues/59

我还尝试在错误存在之前转到 8u144,我发现由于缺少 MSVC dll 而构建安装程序失败(惊喜!惊喜!)。我在这里描述了这个问题:Where/how to get the MSVC dlls Java 1.8.0_144 want?

于 2018-04-05T08:13:48.843 回答