设置JAVA_HOME时,JavaFX应用程序无法启动

时间:2016-10-14 15:14:26

标签: javafx javafx-8 exe executable

我用Java 1.8u45和Inno5将我的JavaFX应用程序打包为带有ant的.exe文件。并且可执行文件在计算机上安装时可以正常工作,其中安装了Java 8并将其设置为JAVA_HOME环境变量,或者根本没有安装任何Java。但是,例如,安装了java 1.6或更低版本,并且JAVA_HOME变量设置为java 1.6,应用程序不会以非常一般的错误Failed to start jvm启动。通过java -jar foobar.jar启动捆绑的.jar文件会导致失败并完全停止jvm或打印unsupported major.minor version 52.0

如何告诉JavaFX永远不要使用JAVA_HOME?

使用以下命令将应用程序打包为fxbuilder的exe:

    <fx:deploy verbose="true" embedJNLP="false" extension="false" includeDT="false" offlineAllowed="true" outdir="${basedir}/target/deploy" outfile="application" nativeBundles="exe" updatemode="background">
        <!-- To list all classes loaded -->
        <!--<fx:jvmarg value="-verbose:class"/>

        <fx:platform basedir="${java.home}" />-->
        <fx:info title="App" vendor="Me" />

        <fx:application refId="fxApplication" />
        <fx:resources refid="appRes" />
    </fx:deploy>

1 个答案:

答案 0 :(得分:1)

当与JRE捆绑在一起时,本机启动器会查找对应.cfg - 文件的文件名,其中包含有关JRE位置的信息(应该有一些这样的行:app.runtime=$APPDIR\runtime

如果.cfg - 文件只包含app.runtime=(没有值),则本机启动程序会搜索本地安装的JRE: https://github.com/teamfx/openjfx-8u-dev-rt/blob/master/modules/fxpackager/src/main/native/library/common/Package.cpp#L120

在Windows上,本机启动程序检查系统注册表内部并且不检查JAVA_HOME属性! https://github.com/teamfx/openjfx-8u-dev-rt/blob/master/modules/fxpackager/src/main/native/library/common/WindowsPlatform.cpp#L188

其他平台也是如此,但他们正在检查JRE_HOME,但从来没有检查过JAVA_HOME。

我建议你检查一下windows-registry(在JDK 8之后安装了JDK 6,取代了更高版本的版本?)!

免责声明:我是javafx-maven-plugin的维护者和javafx-gradle-plugin的创建者。