【问题标题】:JavaFX exe bundling for x86 windows systems用于 x86 Windows 系统的 JavaFX exe 捆绑
【发布时间】:2013-05-09 22:58:33
【问题描述】:


通常我将我的 Java 应用程序部署为包含 JVM 的包,因此无需在系统上安装 JVM。
顺便说一句:这不是 jnlp 小程序,这是一个普通的 Swing 应用程序。
我使用蚂蚁的fx:deploy 做到了这一点。这已经适用于 64 位系统。 我的问题是,我想将此应用程序部署到 32 位系统并且无法正常工作。

这就是我所做的:
我设置了一个干净的 Windows 7(32 位)实例并安装了一个 32 位 JVM。现在我运行我的 ant 脚本来构建一个捆绑的 Java 应用程序,它构建了一个 App.exe。
但是当我尝试通过双击启动这个 exe 时,我收到以下消息框

如果单击“确定”,我会收到另一个消息框

在此之后应用程序将终止。
我没有在网上搜索任何与 32/64 位系统捆绑相关的内容。
所以如果有人能指出我正确的方向,我会很高兴。
非常感谢!
问候,-克里斯-

【问题讨论】:

    标签: deployment x86 java-7 32-bit


    【解决方案1】:

    看起来像是为即将推出的 JavaFX 版本(当前称为 2.2.40)修复的已知错误:

    在错误案例中,用户提到了一种解决方法:

    如果我尝试 RT-22610 中记录的解决方法,即将 runtime\jre\bin\msvcr100.dll 端复制到我的应用程序的启动器二进制文件,它会修复它。

    我认为该错误已在 JDK 8 中修复,因此另一种可能的解决方法是下载 JDK 8 early access release 并使用那里的打包工具打包 Java 7 应用程序(尽管我从未尝试过并且不确定如果可以的话)。

    【讨论】:

    • 感谢您的回复,但这仍然不适合我。 jdk8 构建的 exe 启动后什么都不做。甚至没有错误消息。
    • 解决方法在这里工作,在 VirtualBox 中的 32 位 Win XP 上,带有包含 java 7 jvm(更新 45,我认为)的本机包。
    • 剩下的问题是:我们怎样才能让安装程序自动将dll放在正确的位置?
    • 有人在这方面取得了进展吗?我相信有一种方法可以指定在应用程序安装完成后运行的自定义 InnoSetup 脚本,可以将此文件复制到正确的位置。如果您修改 fxbuild 以指定“详细”模式,您将看到有关如何以这种方式自定义安装的说明。
    • 在 jdk8u40 和 jdk7u55 中得到修复
    【解决方案2】:

    如果您正在生成 MSI,您可以破解 WIX 使用的 WXS 文件,以自动将 msvcr100.dll 复制到应用文件夹中。制作 FX Deploy 详细信息会告诉您它放置临时 WXS 文件的位置,您可以复制和修改并使用它来覆盖 WXS,就像您使用程序图标一样。

    【讨论】:

      【解决方案3】:

      只是对@jewelsea 的修复进行了小修改:

      将 msvcr100.dll 复制到 app/ 文件夹中,而不是将其放在 exe 旁边也可以,而且至少在某种程度上它被隐藏起来了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-22
        • 2015-10-21
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        相关资源
        最近更新 更多