将fxml文件包含在可执行jar中

时间:2017-04-20 07:40:37

标签: java javafx jar build

我试图创建一个jar文件但是当我尝试运行它时,我得到java.lang.IllegalStateException: Location is not set.

这就是我在代码中加载它的方式:

 FXMLLoader loader = new FXMLLoader(Main.class.getResource("/view/MainView.fxml"));

jar文件是使用intellij构建的:项目结构 - >工件

解决

我设法通过添加

来解决它与maven
   <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.fxml</include>
                <include>**/*.css</include>
            </includes>
        </resource>
    </resources>

和maven-assembly-plugin

1 个答案:

答案 0 :(得分:2)

通过IDE构建项目并不是一个好主意。它会更改项目的目录结构,因此您对fxml文件的相对路径不再正确。如果使用Maven构建项目,则应该解决该问题。然后将maven-compiler-plugin添加到生成的pom.xml。

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        ...
    </plugin>
...
</plugins>