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

无法在WinXP 32位上为JavaFX应用程序生成本机捆绑包,java,javafx,javafx-2,javafx-8,Java,Javafx,Javafx 2,Javafx 8,我正在尝试为WinXP 32位系统构建一个JavaFX应用程序(本机捆绑包) 我已经部署了一个Win32位虚拟机。还安装了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\iconswap28554155516555847

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

我已经部署了一个Win32位虚拟机。还安装了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版本

然而,这似乎还不够

尝试使用launch4j构建.exe

您必须将项目导出为“runnable jar”(在eclipse中)


然后在launch4j中选择输出文件和输入文件。您甚至可以绑定到它的JRE路径,或者设置一个最小/最大JRE版本。

什么是项目运行时java版本是32位的?如果没有,您需要使用32位jdk来构建项目。

这个问题听起来像是您试图将jar归档文件(或所有.class文件)打包到exe归档文件中。 我的答案基于这个假设,并试图解释和扩展nextcard的答案。如果我误解了你的问题,我很抱歉。我也很抱歉关于我的链接的错误格式。我不允许发布多个链接。一旦我有了十个名声,我会马上改正的

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

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

包装器:

AOT编译器:

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

实际上,我正在尝试构建一些用NetBeans打包的JavaFX示例,我也收到了同样的错误,我也尝试过使用JDK 7 32位版本,但没有成功。我想知道我遗漏了什么…当前版本的JavaFX不支持Windows XP。(或者确实是微软的了。)在WindowsXP上安装JavaFX8有一个简单的方法。我的问题与JavaFX(NetBeansIDE)提供的原生.exe打包选项有关。这似乎只适用于64位系统。谢谢