无法在 WinXP 32 位上为 JavaFX 应用程序构建本机捆绑包

2022-09-03 03:06:46

我正在尝试为WinXP 32位系统构建JavaFX应用程序(本机捆绑包)。

我已部署 WinXP 32 位虚拟机。还安装了JDK(jdk-8u65-windows-i586)和InnoSetup和Netbeans 8.0.2 ...

但是,当我尝试打包为.EXE应用程序时,我会收到:

Exception: java.io.IOException: Cannot run program "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\iconswap2855415551655584734.exe": CreateProcess error=193, %1 is not a valid Win32 application
C:\Documents and Settings\Administrator\My Documents\Netbeans Projects\AffideaDicomRouterBasic1_0_0\nbproject\jfx-impl.xml:3415: The following error occurred while executing this line:
C:\Documents and Settings\Administrator\My Documents\Netbeans Projects\AffideaDicomRouterBasic1_0_0\nbproject\jfx-impl.xml:3438: The following error occurred while executing this line:
C:\Documents and Settings\Administrator\My Documents\Netbeans Projects\AffideaDicomRouterBasic1_0_0\nbproject\jfx-impl.xml:1465: The following error occurred while executing this line:
C:\Documents and Settings\Administrator\My Documents\Netbeans Projects\AffideaDicomRouterBasic1_0_0\nbproject\jfx-impl.xml:3093: The following error occurred while executing this line:
C:\Documents and Settings\Administrator\My Documents\Netbeans Projects\AffideaDicomRouterBasic1_0_0\nbproject\jfx-impl.xml:2055: Error: Bundler "EXE Installer" (exe) failed to produce a bundle.
BUILD FAILED (total time: 35 seconds)

我的设置可以吗?我错过了别的吗?

我认为为了为WinXP32构建JavaFX应用程序,我只应该:

  • 在类似的(WinXP32)机器上构建它
  • 使用 X86 JDK 版本

然而,这似乎还不够!


答案 1

这个问题听起来像是你试图将jar存档(或所有.class文件)打包到exe存档中。我的答案是基于这个假设,并试图解释和扩展下一张牌的答案。如果我误解了你的问题,我很抱歉。另外,我很抱歉我的链接格式不正确。我不允许发布多个链接。一旦我有十个名声,我就会纠正这一点。

Java不是一种编译语言。这意味着.class文件或jar存档不可执行。每个Java程序都需要使用JIT(Just in time编译器)启动,这通常被称为java。如果您单击它们,系统能够执行jar存档,因为它知道它必须在文件名之前添加“java -jar”才能执行某些操作。

如果你想让java程序作为依赖于系统的可执行文件,你必须使用AOT(提前)编译器。那些产生真正的字节码,系统可以解释自己,依赖于虚拟机上的java程序通常运行。另一种可能性是用launch4j包装jar(nextcard已经提到过)

包装纸:

AOT-compiler:

  • vmkit.llvm.org
  • gcc.gnu.org/java/
  • www.excelsiorjet.com

答案 2

尝试使用launch4j构建.exe。

你必须把你的项目导出为“可运行的jar”(在eclipse中)。

在launch4j中,您选择了输出文件和输入文件。您甚至可以将 JRE 路径捆绑到它,或设置最小/最大 JRE 版本。


推荐