无法使用本机bundle exe启动JavaFX应用程序
我已经创建了一个JavaFX应用程序,并使用Ant创建了它的本机包。当我试图从双击创建的包中使用Jar启动应用程序时,它成功地启动了我的应用程序。但当我尝试双击MyApplication.exe(比如)时,它会抛出JavaFX启动器错误“运行应用程序时出现异常” 我比较了两个jre,发现有很多缺少的jar、exe、dll和一些属性文件 我有这些环境设置-无法使用本机bundle exe启动JavaFX应用程序,java,deployment,ant,javafx-2,bundle,Java,Deployment,Ant,Javafx 2,Bundle,我已经创建了一个JavaFX应用程序,并使用Ant创建了它的本机包。当我试图从双击创建的包中使用Jar启动应用程序时,它成功地启动了我的应用程序。但当我尝试双击MyApplication.exe(比如)时,它会抛出JavaFX启动器错误“运行应用程序时出现异常” 我比较了两个jre,发现有很多缺少的jar、exe、dll和一些属性文件 我有这些环境设置- JAVA_HOME -- C:\Program Files\Java\jdk1.7.0_10 JREFX_HOME -- C:\Program
JAVA_HOME -- C:\Program Files\Java\jdk1.7.0_10
JREFX_HOME -- C:\Program Files\Oracle\JavaFX 2.2 Runtime
Path contains an entry of C:\Program Files\Java\jdk1.7.0_10\bin
JAVA_HOME和JREFX_HOME在my build.xml中使用,以获取ant-javafx.jar和jfxrt.jar--
我创建bundle的步骤如下-
<target name="CreatingExe" depends="SignedJar">
<fx:deploy width="800" height="600" nativeBundles="all" outdir="${OutputPath}" outfile="${app.name}">
<fx:info title="${app.title}"/>
<fx:application name="${app.title}" mainClass="${main.class}"/>
<fx:resources>
<fx:fileset dir="${OutputPath}" includes="*.jar"/>
<fx:fileset dir="${WorkingFolder}/temp"/>
</fx:resources>
</fx:deploy>
</target>
build.xml中还需要什么,才能使应用程序使用exe正确启动
感谢在创建exe时,通过在构建步骤中将jre从“C:\Program Files\Java\jdk\U version\jre”复制到\bundles\MyApplication\runtime\jre来解决不启动JavaFx exe的问题-
<target name="CopyJre" depends="CreatingExe">
<delete dir="${app_path}/bundles/MyApplication/runtime/jre"/>
<mkdir dir="${app_path}/bundles/MyApplication/runtime/jre"/>
<copy todir=${app_path}/bundles/MyApplication/runtime/jre">
<fileset dir="${env.JAVA_HOME}/jre" />
</copy>
</target>
jdk7u10包含所有javafx运行时和开发工具,因此您不应该在jdk目录之外使用javafx位,也就是说,不要使用C:\Program Files\Oracle\javafx 2.2运行时中的任何东西。@jewelsea我们已经更新了路径,将jfxrt.jar作为-${env.JAVA_HOME}/jre/lib/jfxrt.jar,没有任何更改!!如何在创建bundle时将完整的jre文件夹复制到“bundles\MyApplication\runtime\jre”文件夹“默认情况下,只包括Java运行时的一个子集。排除一些可选的和很少使用的文件以减小包大小,例如所有可执行文件。如果您需要默认情况下未包含的内容,则需要将其作为后处理步骤复制进来。对于可安装的软件包,您可以通过填充自包含的应用程序文件夹后执行的配置脚本执行此操作。“但是如何执行此操作?我不知道。正如@jewelsea所提到的,您应该使用${env.JAVA_HOME}/lib/ant-javafx.jar&${env.JAVA_HOME}”/lib/jfxrt.jar而不是JREFX_HOME!!!你在jdk1.7.0_10中有JavaFX,所以卸载所有其他东西,包括“C:\Program Files\Oracle\JavaFX 2.2 Runtime”,你只需要jdk1.7.0_10,我也有同样的问题,我不知道如何修复。JavaFX应用程序的部署让我很沮丧。
<target name="CopyJre" depends="CreatingExe">
<delete dir="${app_path}/bundles/MyApplication/runtime/jre"/>
<mkdir dir="${app_path}/bundles/MyApplication/runtime/jre"/>
<copy todir=${app_path}/bundles/MyApplication/runtime/jre">
<fileset dir="${env.JAVA_HOME}/jre" />
</copy>
</target>