由于缺少 MSVCR100.dll,32 位 Windows 上带有 javafx-maven-plugin 的 JavaFX 8 应用程序本机包无法加载

Native package of JavaFX 8 app with with javafx-maven-plugin on 32-bit Windows fails to load due to MSVCR100.dll missing

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

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

可能有另一个 MSVCR100.dll 依赖的 .dll,但在特定机器上不存在。

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

尝试使用 http://dependencywalker.com/ 查找其他依赖项,看起来您需要的 dll 数量多于 MSVCR100.dll。

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

我认为这与 Windows 是 32 位无关,它恰好与您的两台测试计算机重合。我在这里发布了一个相关的问题:

您遇到的问题可能是 java(fx)packager 上的错误,如下所述:https://bugs.openjdk.java.net/browse/JDK-8191176. That bug report claims the bug started on 8u155 and was solved by 8u171 but I am experiencing the bug all the way to the latest 8u172 b03 as I describe here: https://github.com/javafxports/openjdk-jfx/issues/59

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