使用 Ant 运行 JavaFX 8 应用程序时出现异常

我正在尝试使用 ant 编译和运行 JavaFX 项目。使用 ant 编译没问题,但是,当我尝试使用 ant run 并启动应用程序时,出现此错误:

run:
 [java] Exception in Application start method
 [java] java.lang.reflect.invocationTargetException
 [java]     at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method)
 [java]     at sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62)
 [java]     at sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43)
 [java]     at java.lang.reflect.Method.invoke(Method.java:498)
 [java]     at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
 [java]     at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
 [java]     at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method)
 [java]     at sun.reflect.NativeMethodaccessorImpl.invoke(NativeMethodaccessorImpl.java:62)
 [java]     at sun.reflect.DelegatingMethodaccessorImpl.invoke(DelegatingMethodaccessorImpl.java:43)
 [java]     at java.lang.reflect.Method.invoke(Method.java:498)
 [java]     at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:873)
 [java] Caused by: java.lang.RuntimeException: Exception in Application start method
 [java]     at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
 [java]     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182)
 [java]     at java.lang.Thread.run(Thread.java:748)
 [java] Caused by: java.lang.IllegalStateException: Location is not set.
 [java]     at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434)
 [java]     at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
 [java]     at main.Main.start(Unknown Source)
 [java]     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
 [java]     at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
 [java]     at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
 [java]     at java.security.accessController.doPrivileged(Native Method)
 [java]     at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
 [java]     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
 [java]     at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
 [java]     at com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139)
 [java]     ... 1 more
 [java] Exception running application main.Main
 [java] Java Result: 1

从我在网上找到的,当找不到项目的.fxml文件时,就会出现这个错误。

这仅在我尝试使用 ant 运行程序时发生。当我使用 intelliJ IDE 运行它时,一切正常。我什至在使用 IDE 运行程序时通过给它错误的 .fxml 资源 url 重现了这个错误。所以我猜蚂蚁就是找不到 fxml 文件,但是我在这方面迷路了,不知道如何让我的 build.xml 找到 .fxml。

这是我的 build.xml 文件:

<project name="ija-app" basedir=".">
    <property name="src.dir"    value="src"/>
    <property name="build.dir"  value="build"/>
    <property name="jar.dir"    value="dest"/>
    <property name="lib.dir"    value="lib"/>

    <property name="main-class" value="main.Main"/>

    <path id="classpath">
        <pathelement location="${lib.dir}/jackson-annotations-2.9.0.jar"/>
        <pathelement location="${lib.dir}/jackson-core-2.9.9.jar"/>
        <pathelement location="${lib.dir}/jackson-databind-2.9.9.jar"/>
        <pathelement location="${lib.dir}/jackson-dataformat-yaml-2.9.9.jar"/>
        <pathelement location="${lib.dir}/snakeyaml-1.23.jar"/>
    </path>

    <target name="clean">
        <delete dir="${build.dir}/*"/>
        <delete file="${lib.dir}/*.jar"/>
    </target>

    <target name="compile" depends="clean">
        <exec executable="/bin/bash">
            <arg value="./lib/get-libs.sh"/>
        </exec>
        <javac srcdir="${src.dir}" destdir="${build.dir}">
               <classpath>
                   <path refid="classpath"/>
               </classpath>
        </javac>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
            <zipgroupfileset dir="${lib.dir}" includes="**/*.jar"/>
        </jar>
    </target>

    <target name="docs" depends="compile">
        <javadoc soudepath="${src.dir}" destdir="${doc.dir}">
            <classpath>
                <path refid="classpath"/>
            </classpath>
        </javadoc>
    </target>

    <target name="run">
        <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
    </target>
</project>

感谢您提供有关如何让它运行的任何提示。

tanichos 回答:使用 Ant 运行 JavaFX 8 应用程序时出现异常

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1274252.html

大家都在问